apr.hw revision 253734
1251875Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2251875Speter * contributor license agreements. See the NOTICE file distributed with 3251875Speter * this work for additional information regarding copyright ownership. 4251875Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5251875Speter * (the "License"); you may not use this file except in compliance with 6251875Speter * the License. You may obtain a copy of the License at 7251875Speter * 8251875Speter * http://www.apache.org/licenses/LICENSE-2.0 9251875Speter * 10251875Speter * Unless required by applicable law or agreed to in writing, software 11251875Speter * distributed under the License is distributed on an "AS IS" BASIS, 12251875Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13251875Speter * See the License for the specific language governing permissions and 14251875Speter * limitations under the License. 15251875Speter */ 16251875Speter 17251875Speter 18251875Speter#ifndef APR_H 19251875Speter#define APR_H 20251875Speter 21251875Speter/* GENERATED FILE WARNING! DO NOT EDIT apr.h 22251875Speter * 23251875Speter * You must modify apr.hw instead. 24251875Speter * 25251875Speter * And please, make an effort to stub apr.hnw and apr.h.in in the process. 26251875Speter * 27251875Speter * This is the Win32 specific version of apr.h. It is copied from 28251875Speter * apr.hw by the apr.dsp and libapr.dsp projects. 29251875Speter */ 30251875Speter 31251875Speter/** 32251875Speter * @file apr.h 33251875Speter * @brief APR Platform Definitions 34251875Speter * @remark This is a generated header generated from include/apr.h.in by 35251875Speter * ./configure, or copied from include/apr.hw or include/apr.hnw 36251875Speter * for Win32 or Netware by those build environments, respectively. 37251875Speter */ 38251875Speter 39253734Speter/* Make sure we have our platform identifier macro defined we ask for later. 40253734Speter */ 41253734Speter#if defined(_WIN32) && !defined(WIN32) 42253734Speter#define WIN32 1 43253734Speter#endif 44253734Speter 45251875Speter#if defined(WIN32) || defined(DOXYGEN) 46251875Speter 47251875Speter/* Ignore most warnings (back down to /W3) for poorly constructed headers 48251875Speter */ 49251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 50251875Speter#pragma warning(push, 3) 51251875Speter#endif 52251875Speter 53251875Speter/* disable or reduce the frequency of... 54251875Speter * C4057: indirection to slightly different base types 55251875Speter * C4075: slight indirection changes (unsigned short* vs short[]) 56251875Speter * C4100: unreferenced formal parameter 57251875Speter * C4127: conditional expression is constant 58251875Speter * C4163: '_rotl64' : not available as an intrinsic function 59251875Speter * C4201: nonstandard extension nameless struct/unions 60251875Speter * C4244: int to char/short - precision loss 61251875Speter * C4514: unreferenced inline function removed 62251875Speter */ 63251875Speter#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244) 64251875Speter 65251875Speter/* Ignore Microsoft's interpretation of secure development 66251875Speter * and the POSIX string handling API 67251875Speter */ 68251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1400 69251875Speter#ifndef _CRT_SECURE_NO_DEPRECATE 70251875Speter#define _CRT_SECURE_NO_DEPRECATE 71251875Speter#endif 72251875Speter#pragma warning(disable: 4996) 73251875Speter#endif 74251875Speter 75251875Speter/* Has windows.h already been included? If so, our preferences don't matter, 76251875Speter * but we will still need the winsock things no matter what was included. 77251875Speter * If not, include a restricted set of windows headers to our tastes. 78251875Speter */ 79251875Speter#ifndef _WINDOWS_ 80251875Speter#ifndef WIN32_LEAN_AND_MEAN 81251875Speter#define WIN32_LEAN_AND_MEAN 82251875Speter#endif 83251875Speter#ifndef _WIN32_WINNT 84251875Speter 85251875Speter/* Restrict the server to a subset of Windows XP header files by default 86251875Speter */ 87251875Speter#define _WIN32_WINNT 0x0501 88251875Speter#endif 89251875Speter#ifndef NOUSER 90251875Speter#define NOUSER 91251875Speter#endif 92251875Speter#ifndef NOMCX 93251875Speter#define NOMCX 94251875Speter#endif 95251875Speter#ifndef NOIME 96251875Speter#define NOIME 97251875Speter#endif 98251875Speter#include <windows.h> 99251875Speter/* 100251875Speter * Add a _very_few_ declarations missing from the restricted set of headers 101251875Speter * (If this list becomes extensive, re-enable the required headers above!) 102251875Speter * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now 103251875Speter */ 104251875Speter#define SW_HIDE 0 105251875Speter#ifndef _WIN32_WCE 106251875Speter#include <winsock2.h> 107251875Speter#include <ws2tcpip.h> 108251875Speter#include <mswsock.h> 109251875Speter#else 110251875Speter#include <winsock.h> 111251875Speter#endif 112251875Speter#endif /* !_WINDOWS_ */ 113251875Speter 114251875Speter/** 115251875Speter * @defgroup APR Apache Portability Runtime library 116251875Speter * @{ 117251875Speter */ 118251875Speter/** 119251875Speter * @defgroup apr_platform Platform Definitions 120251875Speter * @{ 121251875Speter * @warning 122251875Speter * <strong><em>The actual values of macros and typedefs on this page<br> 123251875Speter * are platform specific and should NOT be relied upon!</em></strong> 124251875Speter */ 125251875Speter 126251875Speter#define APR_INLINE __inline 127251875Speter#define APR_HAS_INLINE 1 128251875Speter#if !defined(__GNUC__) && !defined(__attribute__) 129251875Speter#define __attribute__(__x) 130251875Speter#endif 131251875Speter 132251875Speter#ifndef _WIN32_WCE 133251875Speter#define APR_HAVE_ARPA_INET_H 0 134251875Speter#define APR_HAVE_CONIO_H 1 135251875Speter#define APR_HAVE_CRYPT_H 0 136251875Speter#define APR_HAVE_CTYPE_H 1 137251875Speter#define APR_HAVE_DIRENT_H 0 138251875Speter#define APR_HAVE_ERRNO_H 1 139251875Speter#define APR_HAVE_FCNTL_H 1 140251875Speter#define APR_HAVE_IO_H 1 141251875Speter#define APR_HAVE_LIMITS_H 1 142251875Speter#define APR_HAVE_NETDB_H 0 143251875Speter#define APR_HAVE_NETINET_IN_H 0 144251875Speter#define APR_HAVE_NETINET_SCTP_H 0 145251875Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 146251875Speter#define APR_HAVE_NETINET_TCP_H 0 147251875Speter#define APR_HAVE_PTHREAD_H 0 148251875Speter#define APR_HAVE_SEMAPHORE_H 0 149251875Speter#define APR_HAVE_SIGNAL_H 1 150251875Speter#define APR_HAVE_STDARG_H 1 151251875Speter#define APR_HAVE_STDINT_H 0 152251875Speter#define APR_HAVE_STDIO_H 1 153251875Speter#define APR_HAVE_STDLIB_H 1 154251875Speter#define APR_HAVE_STRING_H 1 155251875Speter#define APR_HAVE_STRINGS_H 0 156251875Speter#define APR_HAVE_SYS_IOCTL_H 0 157251875Speter#define APR_HAVE_SYS_SENDFILE_H 0 158251875Speter#define APR_HAVE_SYS_SIGNAL_H 0 159251875Speter#define APR_HAVE_SYS_SOCKET_H 0 160251875Speter#define APR_HAVE_SYS_SOCKIO_H 0 161251875Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 162251875Speter#define APR_HAVE_SYS_TIME_H 0 163251875Speter#define APR_HAVE_SYS_TYPES_H 1 164251875Speter#define APR_HAVE_SYS_UIO_H 0 165251875Speter#define APR_HAVE_SYS_UN_H 0 166251875Speter#define APR_HAVE_SYS_WAIT_H 0 167251875Speter#define APR_HAVE_TIME_H 1 168251875Speter#define APR_HAVE_UNISTD_H 0 169251875Speter#define APR_HAVE_STDDEF_H 1 170251875Speter#define APR_HAVE_PROCESS_H 1 171251875Speter#else 172251875Speter#define APR_HAVE_ARPA_INET_H 0 173251875Speter#define APR_HAVE_CONIO_H 0 174251875Speter#define APR_HAVE_CRYPT_H 0 175251875Speter#define APR_HAVE_CTYPE_H 0 176251875Speter#define APR_HAVE_DIRENT_H 0 177251875Speter#define APR_HAVE_ERRNO_H 0 178251875Speter#define APR_HAVE_FCNTL_H 0 179251875Speter#define APR_HAVE_IO_H 0 180251875Speter#define APR_HAVE_LIMITS_H 0 181251875Speter#define APR_HAVE_NETDB_H 0 182251875Speter#define APR_HAVE_NETINET_IN_H 0 183251875Speter#define APR_HAVE_NETINET_SCTP_H 0 184251875Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 185251875Speter#define APR_HAVE_NETINET_TCP_H 0 186251875Speter#define APR_HAVE_PTHREAD_H 0 187251875Speter#define APR_HAVE_SEMAPHORE_H 0 188251875Speter#define APR_HAVE_SIGNAL_H 0 189251875Speter#define APR_HAVE_STDARG_H 0 190251875Speter#define APR_HAVE_STDINT_H 0 191251875Speter#define APR_HAVE_STDIO_H 1 192251875Speter#define APR_HAVE_STDLIB_H 1 193251875Speter#define APR_HAVE_STRING_H 1 194251875Speter#define APR_HAVE_STRINGS_H 0 195251875Speter#define APR_HAVE_SYS_IOCTL_H 0 196251875Speter#define APR_HAVE_SYS_SENDFILE_H 0 197251875Speter#define APR_HAVE_SYS_SIGNAL_H 0 198251875Speter#define APR_HAVE_SYS_SOCKET_H 0 199251875Speter#define APR_HAVE_SYS_SOCKIO_H 0 200251875Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 201251875Speter#define APR_HAVE_SYS_TIME_H 0 202251875Speter#define APR_HAVE_SYS_TYPES_H 0 203251875Speter#define APR_HAVE_SYS_UIO_H 0 204251875Speter#define APR_HAVE_SYS_UN_H 0 205251875Speter#define APR_HAVE_SYS_WAIT_H 0 206251875Speter#define APR_HAVE_TIME_H 0 207251875Speter#define APR_HAVE_UNISTD_H 0 208251875Speter#define APR_HAVE_STDDEF_H 0 209251875Speter#define APR_HAVE_PROCESS_H 0 210251875Speter#endif 211251875Speter 212251875Speter/** @} */ 213251875Speter/** @} */ 214251875Speter 215251875Speter/* We don't include our conditional headers within the doxyblocks 216251875Speter * or the extern "C" namespace 217251875Speter */ 218251875Speter 219251875Speter#if APR_HAVE_STDLIB_H 220251875Speter#include <stdlib.h> 221251875Speter#endif 222251875Speter#if APR_HAVE_STDIO_H 223251875Speter#include <stdio.h> 224251875Speter#endif 225251875Speter#if APR_HAVE_SYS_TYPES_H 226251875Speter#include <sys/types.h> 227251875Speter#endif 228251875Speter#if APR_HAVE_STDDEF_H 229251875Speter#include <stddef.h> 230251875Speter#endif 231251875Speter#if APR_HAVE_TIME_H 232251875Speter#include <time.h> 233251875Speter#endif 234251875Speter#if APR_HAVE_PROCESS_H 235251875Speter#include <process.h> 236251875Speter#endif 237251875Speter 238251875Speter#ifdef __cplusplus 239251875Speterextern "C" { 240251875Speter#endif 241251875Speter 242251875Speter/** 243251875Speter * @addtogroup apr_platform 244251875Speter * @ingroup APR 245251875Speter * @{ 246251875Speter */ 247251875Speter 248251875Speter#define APR_HAVE_SHMEM_MMAP_TMP 0 249251875Speter#define APR_HAVE_SHMEM_MMAP_SHM 0 250251875Speter#define APR_HAVE_SHMEM_MMAP_ZERO 0 251251875Speter#define APR_HAVE_SHMEM_SHMGET_ANON 0 252251875Speter#define APR_HAVE_SHMEM_SHMGET 0 253251875Speter#define APR_HAVE_SHMEM_MMAP_ANON 0 254251875Speter#define APR_HAVE_SHMEM_BEOS 0 255251875Speter 256251875Speter#define APR_USE_SHMEM_MMAP_TMP 0 257251875Speter#define APR_USE_SHMEM_MMAP_SHM 0 258251875Speter#define APR_USE_SHMEM_MMAP_ZERO 0 259251875Speter#define APR_USE_SHMEM_SHMGET_ANON 0 260251875Speter#define APR_USE_SHMEM_SHMGET 0 261251875Speter#define APR_USE_SHMEM_MMAP_ANON 0 262251875Speter#define APR_USE_SHMEM_BEOS 0 263251875Speter 264251875Speter#define APR_USE_FLOCK_SERIALIZE 0 265251875Speter#define APR_USE_POSIXSEM_SERIALIZE 0 266251875Speter#define APR_USE_SYSVSEM_SERIALIZE 0 267251875Speter#define APR_USE_FCNTL_SERIALIZE 0 268251875Speter#define APR_USE_PROC_PTHREAD_SERIALIZE 0 269251875Speter#define APR_USE_PTHREAD_SERIALIZE 0 270251875Speter 271251875Speter#define APR_HAS_FLOCK_SERIALIZE 0 272251875Speter#define APR_HAS_SYSVSEM_SERIALIZE 0 273251875Speter#define APR_HAS_POSIXSEM_SERIALIZE 0 274251875Speter#define APR_HAS_FCNTL_SERIALIZE 0 275251875Speter#define APR_HAS_PROC_PTHREAD_SERIALIZE 0 276251875Speter 277251875Speter#define APR_PROCESS_LOCK_IS_GLOBAL 0 278251875Speter 279251875Speter#define APR_HAVE_CORKABLE_TCP 0 280251875Speter#define APR_HAVE_GETRLIMIT 0 281251875Speter#define APR_HAVE_ICONV 0 282251875Speter#define APR_HAVE_IN_ADDR 1 283251875Speter#define APR_HAVE_INET_ADDR 1 284251875Speter#define APR_HAVE_INET_NETWORK 0 285251875Speter#define APR_HAVE_IPV6 0 286251875Speter#define APR_HAVE_MEMMOVE 1 287251875Speter#define APR_HAVE_SETRLIMIT 0 288251875Speter#define APR_HAVE_SIGACTION 0 289251875Speter#define APR_HAVE_SIGSUSPEND 0 290251875Speter#define APR_HAVE_SIGWAIT 0 291251875Speter#define APR_HAVE_SA_STORAGE 0 292251875Speter#define APR_HAVE_STRCASECMP 0 293251875Speter#define APR_HAVE_STRDUP 1 294251875Speter#define APR_HAVE_STRNCASECMP 0 295251875Speter#define APR_HAVE_STRSTR 1 296251875Speter#define APR_HAVE_MEMCHR 1 297251875Speter#define APR_HAVE_STRUCT_RLIMIT 0 298251875Speter#define APR_HAVE_UNION_SEMUN 0 299251875Speter#define APR_HAVE_SCTP 0 300251875Speter#define APR_HAVE_IOVEC 0 301251875Speter 302251875Speter#ifndef _WIN32_WCE 303251875Speter#define APR_HAVE_STRICMP 1 304251875Speter#define APR_HAVE_STRNICMP 1 305251875Speter#else 306251875Speter#define APR_HAVE_STRICMP 0 307251875Speter#define APR_HAVE_STRNICMP 0 308251875Speter#endif 309251875Speter 310251875Speter/* APR Feature Macros */ 311251875Speter#define APR_HAS_SHARED_MEMORY 1 312251875Speter#define APR_HAS_THREADS 1 313251875Speter#define APR_HAS_MMAP 1 314251875Speter#define APR_HAS_FORK 0 315251875Speter#define APR_HAS_RANDOM 1 316251875Speter#define APR_HAS_OTHER_CHILD 1 317251875Speter#define APR_HAS_DSO 1 318251875Speter#define APR_HAS_SO_ACCEPTFILTER 0 319251875Speter#define APR_HAS_UNICODE_FS 1 320251875Speter#define APR_HAS_PROC_INVOKED 1 321251875Speter#define APR_HAS_OS_UUID 1 322251875Speter 323251875Speter#ifndef _WIN32_WCE 324251875Speter#define APR_HAS_SENDFILE 1 325251875Speter#define APR_HAS_USER 1 326251875Speter#define APR_HAS_LARGE_FILES 1 327251875Speter#define APR_HAS_XTHREAD_FILES 1 328251875Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1 329251875Speter#else 330251875Speter#define APR_HAS_SENDFILE 0 331251875Speter#define APR_HAS_USER 0 332251875Speter#define APR_HAS_LARGE_FILES 0 333251875Speter#define APR_HAS_XTHREAD_FILES 0 334251875Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0 335251875Speter#endif 336251875Speter 337251875Speter/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible 338251875Speter * to poll on files/pipes. 339251875Speter */ 340251875Speter#define APR_FILES_AS_SOCKETS 0 341251875Speter 342251875Speter/* This macro indicates whether or not EBCDIC is the native character set. 343251875Speter */ 344251875Speter#define APR_CHARSET_EBCDIC 0 345251875Speter 346251875Speter/* If we have a TCP implementation that can be "corked", what flag 347251875Speter * do we use? 348251875Speter */ 349251875Speter#define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ 350251875Speter 351251875Speter/* Is the TCP_NODELAY socket option inherited from listening sockets? 352251875Speter */ 353251875Speter#define APR_TCP_NODELAY_INHERITED 1 354251875Speter 355251875Speter/* Is the O_NONBLOCK flag inherited from listening sockets? 356251875Speter */ 357251875Speter#define APR_O_NONBLOCK_INHERITED 1 358251875Speter 359251875Speter/* Typedefs that APR needs. */ 360251875Speter 361251875Spetertypedef unsigned char apr_byte_t; 362251875Speter 363251875Spetertypedef short apr_int16_t; 364251875Spetertypedef unsigned short apr_uint16_t; 365251875Speter 366251875Spetertypedef int apr_int32_t; 367251875Spetertypedef unsigned int apr_uint32_t; 368251875Speter 369251875Spetertypedef __int64 apr_int64_t; 370251875Spetertypedef unsigned __int64 apr_uint64_t; 371251875Speter 372251875Spetertypedef size_t apr_size_t; 373251875Speter#if APR_HAVE_STDDEF_H 374251875Spetertypedef ptrdiff_t apr_ssize_t; 375251875Speter#else 376251875Spetertypedef int apr_ssize_t; 377251875Speter#endif 378251875Speter#if APR_HAS_LARGE_FILES 379251875Spetertypedef __int64 apr_off_t; 380251875Speter#else 381251875Spetertypedef int apr_off_t; 382251875Speter#endif 383251875Spetertypedef int apr_socklen_t; 384251875Spetertypedef apr_uint64_t apr_ino_t; 385251875Speter 386253734Speter#ifdef _WIN64 387251875Speter#define APR_SIZEOF_VOIDP 8 388251875Speter#else 389251875Speter#define APR_SIZEOF_VOIDP 4 390251875Speter#endif 391251875Speter 392251875Speter#if APR_SIZEOF_VOIDP == 8 393251875Spetertypedef apr_uint64_t apr_uintptr_t; 394251875Speter#else 395251875Spetertypedef apr_uint32_t apr_uintptr_t; 396251875Speter#endif 397251875Speter 398251875Speter/* Are we big endian? */ 399251875Speter/* XXX: Fatal assumption on Alpha platforms */ 400251875Speter#define APR_IS_BIGENDIAN 0 401251875Speter 402251875Speter/* Mechanisms to properly type numeric literals */ 403251875Speter 404251875Speter#ifndef __GNUC__ 405251875Speter#define APR_INT64_C(val) (val##i64) 406251875Speter#define APR_UINT64_C(val) (val##Ui64) 407251875Speter#else 408251875Speter#define APR_INT64_C(val) (val##LL) 409251875Speter#define APR_UINT64_C(val) (val##ULL) 410251875Speter#endif 411251875Speter 412251875Speter#ifdef INT16_MIN 413251875Speter#define APR_INT16_MIN INT16_MIN 414251875Speter#else 415251875Speter#define APR_INT16_MIN (-0x7fff - 1) 416251875Speter#endif 417251875Speter 418251875Speter#ifdef INT16_MAX 419251875Speter#define APR_INT16_MAX INT16_MAX 420251875Speter#else 421251875Speter#define APR_INT16_MAX (0x7fff) 422251875Speter#endif 423251875Speter 424251875Speter#ifdef UINT16_MAX 425251875Speter#define APR_UINT16_MAX UINT16_MAX 426251875Speter#else 427251875Speter#define APR_UINT16_MAX (0xffff) 428251875Speter#endif 429251875Speter 430251875Speter#ifdef INT32_MIN 431251875Speter#define APR_INT32_MIN INT32_MIN 432251875Speter#else 433251875Speter#define APR_INT32_MIN (-0x7fffffff - 1) 434251875Speter#endif 435251875Speter 436251875Speter#ifdef INT32_MAX 437251875Speter#define APR_INT32_MAX INT32_MAX 438251875Speter#else 439251875Speter#define APR_INT32_MAX 0x7fffffff 440251875Speter#endif 441251875Speter 442251875Speter#ifdef UINT32_MAX 443251875Speter#define APR_UINT32_MAX UINT32_MAX 444251875Speter#else 445251875Speter#define APR_UINT32_MAX (0xffffffffU) 446251875Speter#endif 447251875Speter 448251875Speter#ifdef INT64_MIN 449251875Speter#define APR_INT64_MIN INT64_MIN 450251875Speter#else 451251875Speter#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 452251875Speter#endif 453251875Speter 454251875Speter#ifdef INT64_MAX 455251875Speter#define APR_INT64_MAX INT64_MAX 456251875Speter#else 457251875Speter#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 458251875Speter#endif 459251875Speter 460251875Speter#ifdef UINT64_MAX 461251875Speter#define APR_UINT64_MAX UINT64_MAX 462251875Speter#else 463251875Speter#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 464251875Speter#endif 465251875Speter 466251875Speter#define APR_SIZE_MAX (~((apr_size_t)0)) 467251875Speter 468251875Speter/* Definitions that APR programs need to work properly. */ 469251875Speter 470251875Speter/** 471251875Speter * APR public API wrap for C++ compilers. 472251875Speter */ 473251875Speter#ifdef __cplusplus 474251875Speter#define APR_BEGIN_DECLS extern "C" { 475251875Speter#define APR_END_DECLS } 476251875Speter#else 477251875Speter#define APR_BEGIN_DECLS 478251875Speter#define APR_END_DECLS 479251875Speter#endif 480251875Speter 481251875Speter/** 482251875Speter * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 483251875Speter * so that they follow the platform's calling convention. 484251875Speter * <PRE> 485251875Speter * 486251875Speter * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 487251875Speter * 488251875Speter * </PRE> 489251875Speter */ 490251875Speter#define APR_THREAD_FUNC __stdcall 491251875Speter 492251875Speter 493251875Speter#if defined(DOXYGEN) || !defined(WIN32) 494251875Speter 495251875Speter/** 496251875Speter * The public APR functions are declared with APR_DECLARE(), so they may 497251875Speter * use the most appropriate calling convention. Public APR functions with 498251875Speter * variable arguments must use APR_DECLARE_NONSTD(). 499251875Speter * 500251875Speter * @remark Both the declaration and implementations must use the same macro. 501251875Speter * 502251875Speter * <PRE> 503251875Speter * APR_DECLARE(rettype) apr_func(args) 504251875Speter * </PRE> 505251875Speter * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 506251875Speter * @remark Note that when APR compiles the library itself, it passes the 507251875Speter * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 508251875Speter * to export public symbols from the dynamic library build.\n 509251875Speter * The user must define the APR_DECLARE_STATIC when compiling to target 510251875Speter * the static APR library on some platforms (e.g. Win32.) The public symbols 511251875Speter * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 512251875Speter * By default, compiling an application and including the APR public 513251875Speter * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 514251875Speter * linked to the dynamic library. 515251875Speter */ 516251875Speter#define APR_DECLARE(type) type 517251875Speter 518251875Speter/** 519251875Speter * The public APR functions using variable arguments are declared with 520251875Speter * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 521251875Speter * @see APR_DECLARE @see APR_DECLARE_DATA 522251875Speter * @remark Both the declaration and implementations must use the same macro. 523251875Speter * <PRE> 524251875Speter * 525251875Speter * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 526251875Speter * 527251875Speter * </PRE> 528251875Speter */ 529251875Speter#define APR_DECLARE_NONSTD(type) type 530251875Speter 531251875Speter/** 532251875Speter * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 533251875Speter * This assures the appropriate indirection is invoked at compile time. 534251875Speter * @see APR_DECLARE @see APR_DECLARE_NONSTD 535251875Speter * @remark Note that the declaration and implementations use different forms, 536251875Speter * but both must include the macro. 537251875Speter * 538251875Speter * <PRE> 539251875Speter * 540251875Speter * extern APR_DECLARE_DATA type apr_variable;\n 541251875Speter * APR_DECLARE_DATA type apr_variable = value; 542251875Speter * 543251875Speter * </PRE> 544251875Speter */ 545251875Speter#define APR_DECLARE_DATA 546251875Speter 547251875Speter#elif defined(APR_DECLARE_STATIC) 548251875Speter#define APR_DECLARE(type) type __stdcall 549251875Speter#define APR_DECLARE_NONSTD(type) type __cdecl 550251875Speter#define APR_DECLARE_DATA 551251875Speter#elif defined(APR_DECLARE_EXPORT) 552251875Speter#define APR_DECLARE(type) __declspec(dllexport) type __stdcall 553251875Speter#define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl 554251875Speter#define APR_DECLARE_DATA __declspec(dllexport) 555251875Speter#else 556251875Speter#define APR_DECLARE(type) __declspec(dllimport) type __stdcall 557251875Speter#define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl 558251875Speter#define APR_DECLARE_DATA __declspec(dllimport) 559251875Speter#endif 560251875Speter 561253734Speter#ifdef _WIN64 562251875Speter#define APR_SSIZE_T_FMT "I64d" 563251875Speter#define APR_SIZE_T_FMT "I64u" 564251875Speter#else 565251875Speter#define APR_SSIZE_T_FMT "d" 566251875Speter#define APR_SIZE_T_FMT "u" 567251875Speter#endif 568251875Speter 569251875Speter#if APR_HAS_LARGE_FILES 570251875Speter#define APR_OFF_T_FMT "I64d" 571251875Speter#else 572251875Speter#define APR_OFF_T_FMT "d" 573251875Speter#endif 574251875Speter 575251875Speter#define APR_PID_T_FMT "d" 576251875Speter 577251875Speter#define APR_INT64_T_FMT "I64d" 578251875Speter#define APR_UINT64_T_FMT "I64u" 579251875Speter#define APR_UINT64_T_HEX_FMT "I64x" 580251875Speter 581251875Speter/* No difference between PROC and GLOBAL mutex */ 582251875Speter#define APR_PROC_MUTEX_IS_GLOBAL 1 583251875Speter 584251875Speter/* Local machine definition for console and log output. */ 585251875Speter#define APR_EOL_STR "\r\n" 586251875Speter 587251875Spetertypedef int apr_wait_t; 588251875Speter 589251875Speter#if APR_HAS_UNICODE_FS 590251875Speter/* An arbitrary size that is digestable. True max is a bit less than 32000 */ 591251875Speter#define APR_PATH_MAX 8192 592251875Speter#else /* !APR_HAS_UNICODE_FS */ 593251875Speter#define APR_PATH_MAX MAX_PATH 594251875Speter#endif 595251875Speter 596251875Speter#define APR_DSOPATH "PATH" 597251875Speter 598251875Speter/** @} */ 599251875Speter 600251875Speter/* Definitions that only Win32 programs need to compile properly. */ 601251875Speter 602251875Speter/* XXX These simply don't belong here, perhaps in apr_portable.h 603251875Speter * based on some APR_HAVE_PID/GID/UID? 604251875Speter */ 605251875Speter#ifndef __GNUC__ 606251875Spetertypedef int pid_t; 607251875Speter#endif 608251875Spetertypedef int uid_t; 609251875Spetertypedef int gid_t; 610251875Speter 611251875Speter/* Win32 .h ommissions we really need */ 612251875Speter#define STDIN_FILENO 0 613251875Speter#define STDOUT_FILENO 1 614251875Speter#define STDERR_FILENO 2 615251875Speter 616251875Speter#if APR_HAVE_IPV6 617251875Speter 618251875Speter/* Appears in later flavors, not the originals. */ 619251875Speter#ifndef in_addr6 620251875Speter#define in6_addr in_addr6 621251875Speter#endif 622251875Speter 623251875Speter#ifndef WS2TCPIP_INLINE 624251875Speter#define IN6_IS_ADDR_V4MAPPED(a) \ 625251875Speter ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ 626251875Speter && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) 627251875Speter#endif 628251875Speter 629251875Speter#endif /* APR_HAS_IPV6 */ 630251875Speter 631251875Speter#ifdef __cplusplus 632251875Speter} 633251875Speter#endif 634251875Speter 635251875Speter/* Done with badly written headers 636251875Speter */ 637251875Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 638251875Speter#pragma warning(pop) 639251875Speter#pragma warning(disable: 4996) 640251875Speter#endif 641251875Speter 642251875Speter#endif /* WIN32 */ 643251875Speter 644251875Speter#endif /* APR_H */ 645