1266733Speter/* Licensed to the Apache Software Foundation (ASF) under one or more 2266733Speter * contributor license agreements. See the NOTICE file distributed with 3266733Speter * this work for additional information regarding copyright ownership. 4266733Speter * The ASF licenses this file to You under the Apache License, Version 2.0 5266733Speter * (the "License"); you may not use this file except in compliance with 6266733Speter * the License. You may obtain a copy of the License at 7266733Speter * 8266733Speter * http://www.apache.org/licenses/LICENSE-2.0 9266733Speter * 10266733Speter * Unless required by applicable law or agreed to in writing, software 11266733Speter * distributed under the License is distributed on an "AS IS" BASIS, 12266733Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13266733Speter * See the License for the specific language governing permissions and 14266733Speter * limitations under the License. 15266733Speter */ 16266733Speter 17266733Speter 18266733Speter#ifndef APR_H 19266733Speter#define APR_H 20266733Speter 21266733Speter/* GENERATED FILE WARNING! DO NOT EDIT apr.h 22266733Speter * 23266733Speter * You must modify apr.hwc instead. 24266733Speter * 25266733Speter * And please, make an effort to stub apr.hnw and apr.h.in in the process. 26266733Speter * 27266733Speter * This is the Win32 specific version of apr.h. It is copied from 28266733Speter * apr.hw by the apr.dsp and libapr.dsp projects. 29266733Speter */ 30266733Speter 31266733Speter/** 32266733Speter * @file apr.h 33266733Speter * @brief APR Platform Definitions 34266733Speter * @remark This is a generated header generated from include/apr.h.in by 35266733Speter * ./configure, or copied from include/apr.hw or include/apr.hnw 36266733Speter * for Win32 or Netware by those build environments, respectively. 37266733Speter */ 38266733Speter 39266733Speter/* Make sure we have our platform identifier macro defined we ask for later. 40266733Speter */ 41266733Speter#if defined(_WIN32) && !defined(WIN32) 42266733Speter#define WIN32 1 43266733Speter#endif 44266733Speter 45266733Speter#if defined(WIN32) || defined(DOXYGEN) 46266733Speter 47266733Speter/* Ignore most warnings (back down to /W3) for poorly constructed headers 48266733Speter */ 49266733Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 50266733Speter#pragma warning(push, 3) 51266733Speter#endif 52266733Speter 53266733Speter/* disable or reduce the frequency of... 54266733Speter * C4057: indirection to slightly different base types 55266733Speter * C4075: slight indirection changes (unsigned short* vs short[]) 56266733Speter * C4100: unreferenced formal parameter 57266733Speter * C4127: conditional expression is constant 58266733Speter * C4163: '_rotl64' : not available as an intrinsic function 59266733Speter * C4201: nonstandard extension nameless struct/unions 60266733Speter * C4244: int to char/short - precision loss 61266733Speter * C4514: unreferenced inline function removed 62266733Speter */ 63266733Speter#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244) 64266733Speter 65266733Speter/* Ignore Microsoft's interpretation of secure development 66266733Speter * and the POSIX string handling API 67266733Speter */ 68266733Speter#if defined(_MSC_VER) && _MSC_VER >= 1400 69266733Speter#ifndef _CRT_SECURE_NO_DEPRECATE 70266733Speter#define _CRT_SECURE_NO_DEPRECATE 71266733Speter#endif 72266733Speter#pragma warning(disable: 4996) 73266733Speter#endif 74266733Speter 75266733Speter/* Has windows.h already been included? If so, our preferences don't matter, 76266733Speter * but we will still need the winsock things no matter what was included. 77266733Speter * If not, include a restricted set of windows headers to our tastes. 78266733Speter */ 79266733Speter#ifndef _WINDOWS_ 80266733Speter#ifndef WIN32_LEAN_AND_MEAN 81266733Speter#define WIN32_LEAN_AND_MEAN 82266733Speter#endif 83266733Speter#ifndef _WIN32_WINNT 84266733Speter#define _WIN32_WINNT @win32_winnt_str@ 85266733Speter#endif 86266733Speter#ifndef NOUSER 87266733Speter#define NOUSER 88266733Speter#endif 89266733Speter#ifndef NOMCX 90266733Speter#define NOMCX 91266733Speter#endif 92266733Speter#ifndef NOIME 93266733Speter#define NOIME 94266733Speter#endif 95266733Speter#include <windows.h> 96266733Speter/* 97266733Speter * Add a _very_few_ declarations missing from the restricted set of headers 98266733Speter * (If this list becomes extensive, re-enable the required headers above!) 99266733Speter * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now 100266733Speter */ 101266733Speter#define SW_HIDE 0 102266733Speter#ifndef _WIN32_WCE 103266733Speter#include <winsock2.h> 104266733Speter#include <ws2tcpip.h> 105266733Speter#include <mswsock.h> 106266733Speter#else 107266733Speter#include <winsock.h> 108266733Speter#endif 109266733Speter#endif /* !_WINDOWS_ */ 110266733Speter 111266733Speter/** 112266733Speter * @defgroup APR Apache Portability Runtime library 113266733Speter * @{ 114266733Speter */ 115266733Speter/** 116266733Speter * @defgroup apr_platform Platform Definitions 117266733Speter * @{ 118266733Speter * @warning 119266733Speter * <strong><em>The actual values of macros and typedefs on this page<br> 120266733Speter * are platform specific and should NOT be relied upon!</em></strong> 121266733Speter */ 122266733Speter 123266733Speter#define APR_INLINE __inline 124266733Speter#define APR_HAS_INLINE 1 125266733Speter#if !defined(__GNUC__) && !defined(__attribute__) 126266733Speter#define __attribute__(__x) 127266733Speter#endif 128266733Speter 129266733Speter#ifndef _WIN32_WCE 130266733Speter#define APR_HAVE_ARPA_INET_H 0 131266733Speter#define APR_HAVE_CONIO_H 1 132266733Speter#define APR_HAVE_CRYPT_H 0 133266733Speter#define APR_HAVE_CTYPE_H 1 134266733Speter#define APR_HAVE_DIRENT_H 0 135266733Speter#define APR_HAVE_ERRNO_H 1 136266733Speter#define APR_HAVE_FCNTL_H 1 137266733Speter#define APR_HAVE_IO_H 1 138266733Speter#define APR_HAVE_LIMITS_H 1 139266733Speter#define APR_HAVE_NETDB_H 0 140266733Speter#define APR_HAVE_NETINET_IN_H 0 141266733Speter#define APR_HAVE_NETINET_SCTP_H 0 142266733Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 143266733Speter#define APR_HAVE_NETINET_TCP_H 0 144266733Speter#define APR_HAVE_PTHREAD_H 0 145266733Speter#define APR_HAVE_SEMAPHORE_H 0 146266733Speter#define APR_HAVE_SIGNAL_H 1 147266733Speter#define APR_HAVE_STDARG_H 1 148266733Speter#define APR_HAVE_STDINT_H 0 149266733Speter#define APR_HAVE_STDIO_H 1 150266733Speter#define APR_HAVE_STDLIB_H 1 151266733Speter#define APR_HAVE_STRING_H 1 152266733Speter#define APR_HAVE_STRINGS_H 0 153266733Speter#define APR_HAVE_SYS_IOCTL_H 0 154266733Speter#define APR_HAVE_SYS_SENDFILE_H 0 155266733Speter#define APR_HAVE_SYS_SIGNAL_H 0 156266733Speter#define APR_HAVE_SYS_SOCKET_H 0 157266733Speter#define APR_HAVE_SYS_SOCKIO_H 0 158266733Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 159266733Speter#define APR_HAVE_SYS_TIME_H 0 160266733Speter#define APR_HAVE_SYS_TYPES_H 1 161266733Speter#define APR_HAVE_SYS_UIO_H 0 162266733Speter#define APR_HAVE_SYS_UN_H 0 163266733Speter#define APR_HAVE_SYS_WAIT_H 0 164266733Speter#define APR_HAVE_TIME_H 1 165266733Speter#define APR_HAVE_UNISTD_H 0 166266733Speter#define APR_HAVE_STDDEF_H 1 167266733Speter#define APR_HAVE_PROCESS_H 1 168266733Speter#else 169266733Speter#define APR_HAVE_ARPA_INET_H 0 170266733Speter#define APR_HAVE_CONIO_H 0 171266733Speter#define APR_HAVE_CRYPT_H 0 172266733Speter#define APR_HAVE_CTYPE_H 0 173266733Speter#define APR_HAVE_DIRENT_H 0 174266733Speter#define APR_HAVE_ERRNO_H 0 175266733Speter#define APR_HAVE_FCNTL_H 0 176266733Speter#define APR_HAVE_IO_H 0 177266733Speter#define APR_HAVE_LIMITS_H 0 178266733Speter#define APR_HAVE_NETDB_H 0 179266733Speter#define APR_HAVE_NETINET_IN_H 0 180266733Speter#define APR_HAVE_NETINET_SCTP_H 0 181266733Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 182266733Speter#define APR_HAVE_NETINET_TCP_H 0 183266733Speter#define APR_HAVE_PTHREAD_H 0 184266733Speter#define APR_HAVE_SEMAPHORE_H 0 185266733Speter#define APR_HAVE_SIGNAL_H 0 186266733Speter#define APR_HAVE_STDARG_H 0 187266733Speter#define APR_HAVE_STDINT_H 0 188266733Speter#define APR_HAVE_STDIO_H 1 189266733Speter#define APR_HAVE_STDLIB_H 1 190266733Speter#define APR_HAVE_STRING_H 1 191266733Speter#define APR_HAVE_STRINGS_H 0 192266733Speter#define APR_HAVE_SYS_IOCTL_H 0 193266733Speter#define APR_HAVE_SYS_SENDFILE_H 0 194266733Speter#define APR_HAVE_SYS_SIGNAL_H 0 195266733Speter#define APR_HAVE_SYS_SOCKET_H 0 196266733Speter#define APR_HAVE_SYS_SOCKIO_H 0 197266733Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 198266733Speter#define APR_HAVE_SYS_TIME_H 0 199266733Speter#define APR_HAVE_SYS_TYPES_H 0 200266733Speter#define APR_HAVE_SYS_UIO_H 0 201266733Speter#define APR_HAVE_SYS_UN_H 0 202266733Speter#define APR_HAVE_SYS_WAIT_H 0 203266733Speter#define APR_HAVE_TIME_H 0 204266733Speter#define APR_HAVE_UNISTD_H 0 205266733Speter#define APR_HAVE_STDDEF_H 0 206266733Speter#define APR_HAVE_PROCESS_H 0 207266733Speter#endif 208266733Speter 209266733Speter/** @} */ 210266733Speter/** @} */ 211266733Speter 212266733Speter/* We don't include our conditional headers within the doxyblocks 213266733Speter * or the extern "C" namespace 214266733Speter */ 215266733Speter 216266733Speter#if APR_HAVE_STDLIB_H 217266733Speter#include <stdlib.h> 218266733Speter#endif 219266733Speter#if APR_HAVE_STDIO_H 220266733Speter#include <stdio.h> 221266733Speter#endif 222266733Speter#if APR_HAVE_SYS_TYPES_H 223266733Speter#include <sys/types.h> 224266733Speter#endif 225266733Speter#if APR_HAVE_STDDEF_H 226266733Speter#include <stddef.h> 227266733Speter#endif 228266733Speter#if APR_HAVE_TIME_H 229266733Speter#include <time.h> 230266733Speter#endif 231266733Speter#if APR_HAVE_PROCESS_H 232266733Speter#include <process.h> 233266733Speter#endif 234266733Speter 235266733Speter#ifdef __cplusplus 236266733Speterextern "C" { 237266733Speter#endif 238266733Speter 239266733Speter/** 240266733Speter * @addtogroup apr_platform 241266733Speter * @ingroup APR 242266733Speter * @{ 243266733Speter */ 244266733Speter 245266733Speter#define APR_HAVE_SHMEM_MMAP_TMP 0 246266733Speter#define APR_HAVE_SHMEM_MMAP_SHM 0 247266733Speter#define APR_HAVE_SHMEM_MMAP_ZERO 0 248266733Speter#define APR_HAVE_SHMEM_SHMGET_ANON 0 249266733Speter#define APR_HAVE_SHMEM_SHMGET 0 250266733Speter#define APR_HAVE_SHMEM_MMAP_ANON 0 251266733Speter#define APR_HAVE_SHMEM_BEOS 0 252266733Speter 253266733Speter#define APR_USE_SHMEM_MMAP_TMP 0 254266733Speter#define APR_USE_SHMEM_MMAP_SHM 0 255266733Speter#define APR_USE_SHMEM_MMAP_ZERO 0 256266733Speter#define APR_USE_SHMEM_SHMGET_ANON 0 257266733Speter#define APR_USE_SHMEM_SHMGET 0 258266733Speter#define APR_USE_SHMEM_MMAP_ANON 0 259266733Speter#define APR_USE_SHMEM_BEOS 0 260266733Speter 261266733Speter#define APR_USE_FLOCK_SERIALIZE 0 262266733Speter#define APR_USE_POSIXSEM_SERIALIZE 0 263266733Speter#define APR_USE_SYSVSEM_SERIALIZE 0 264266733Speter#define APR_USE_FCNTL_SERIALIZE 0 265266733Speter#define APR_USE_PROC_PTHREAD_SERIALIZE 0 266266733Speter#define APR_USE_PTHREAD_SERIALIZE 0 267266733Speter 268266733Speter#define APR_HAS_FLOCK_SERIALIZE 0 269266733Speter#define APR_HAS_SYSVSEM_SERIALIZE 0 270266733Speter#define APR_HAS_POSIXSEM_SERIALIZE 0 271266733Speter#define APR_HAS_FCNTL_SERIALIZE 0 272266733Speter#define APR_HAS_PROC_PTHREAD_SERIALIZE 0 273266733Speter 274266733Speter#define APR_PROCESS_LOCK_IS_GLOBAL 0 275266733Speter 276266733Speter#define APR_HAVE_CORKABLE_TCP 0 277266733Speter#define APR_HAVE_GETRLIMIT 0 278266733Speter#define APR_HAVE_ICONV 0 279266733Speter#define APR_HAVE_IN_ADDR 1 280266733Speter#define APR_HAVE_INET_ADDR 1 281266733Speter#define APR_HAVE_INET_NETWORK 0 282266733Speter#define APR_HAVE_IPV6 @apr_have_ipv6_10@ 283266733Speter#define APR_HAVE_MEMMOVE 1 284266733Speter#define APR_HAVE_SETRLIMIT 0 285266733Speter#define APR_HAVE_SIGACTION 0 286266733Speter#define APR_HAVE_SIGSUSPEND 0 287266733Speter#define APR_HAVE_SIGWAIT 0 288266733Speter#define APR_HAVE_SA_STORAGE 0 289266733Speter#define APR_HAVE_STRCASECMP 0 290266733Speter#define APR_HAVE_STRDUP 1 291266733Speter#define APR_HAVE_STRNCASECMP 0 292266733Speter#define APR_HAVE_STRSTR 1 293266733Speter#define APR_HAVE_MEMCHR 1 294266733Speter#define APR_HAVE_STRUCT_RLIMIT 0 295266733Speter#define APR_HAVE_UNION_SEMUN 0 296266733Speter#define APR_HAVE_SCTP 0 297266733Speter#define APR_HAVE_IOVEC 0 298266733Speter 299266733Speter#ifndef _WIN32_WCE 300266733Speter#define APR_HAVE_STRICMP 1 301266733Speter#define APR_HAVE_STRNICMP 1 302266733Speter#else 303266733Speter#define APR_HAVE_STRICMP 0 304266733Speter#define APR_HAVE_STRNICMP 0 305266733Speter#endif 306266733Speter 307266733Speter/* APR Feature Macros */ 308266733Speter#define APR_HAS_SHARED_MEMORY 1 309266733Speter#define APR_HAS_THREADS 1 310266733Speter#define APR_HAS_MMAP 1 311266733Speter#define APR_HAS_FORK 0 312266733Speter#define APR_HAS_RANDOM 1 313266733Speter#define APR_HAS_OTHER_CHILD 1 314266733Speter#define APR_HAS_DSO 1 315266733Speter#define APR_HAS_SO_ACCEPTFILTER 0 316266733Speter#define APR_HAS_UNICODE_FS 1 317266733Speter#define APR_HAS_PROC_INVOKED 1 318266733Speter#define APR_HAS_OS_UUID 1 319266733Speter 320266733Speter#ifndef _WIN32_WCE 321266733Speter#define APR_HAS_SENDFILE 1 322266733Speter#define APR_HAS_USER 1 323266733Speter#define APR_HAS_LARGE_FILES 1 324266733Speter#define APR_HAS_XTHREAD_FILES 1 325266733Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1 326266733Speter#else 327266733Speter#define APR_HAS_SENDFILE 0 328266733Speter#define APR_HAS_USER 0 329266733Speter#define APR_HAS_LARGE_FILES 0 330266733Speter#define APR_HAS_XTHREAD_FILES 0 331266733Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0 332266733Speter#endif 333266733Speter 334266733Speter/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible 335266733Speter * to poll on files/pipes. 336266733Speter */ 337266733Speter#define APR_FILES_AS_SOCKETS 0 338266733Speter 339266733Speter/* This macro indicates whether or not EBCDIC is the native character set. 340266733Speter */ 341266733Speter#define APR_CHARSET_EBCDIC 0 342266733Speter 343266733Speter/* If we have a TCP implementation that can be "corked", what flag 344266733Speter * do we use? 345266733Speter */ 346266733Speter#define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ 347266733Speter 348266733Speter/* Is the TCP_NODELAY socket option inherited from listening sockets? 349266733Speter */ 350266733Speter#define APR_TCP_NODELAY_INHERITED 1 351266733Speter 352266733Speter/* Is the O_NONBLOCK flag inherited from listening sockets? 353266733Speter */ 354266733Speter#define APR_O_NONBLOCK_INHERITED 1 355266733Speter 356266733Speter/* Typedefs that APR needs. */ 357266733Speter 358266733Spetertypedef unsigned char apr_byte_t; 359266733Speter 360266733Spetertypedef short apr_int16_t; 361266733Spetertypedef unsigned short apr_uint16_t; 362266733Speter 363266733Spetertypedef int apr_int32_t; 364266733Spetertypedef unsigned int apr_uint32_t; 365266733Speter 366266733Spetertypedef __int64 apr_int64_t; 367266733Spetertypedef unsigned __int64 apr_uint64_t; 368266733Speter 369266733Spetertypedef size_t apr_size_t; 370266733Speter#if APR_HAVE_STDDEF_H 371266733Spetertypedef ptrdiff_t apr_ssize_t; 372266733Speter#else 373266733Spetertypedef int apr_ssize_t; 374266733Speter#endif 375266733Speter#if APR_HAS_LARGE_FILES 376266733Spetertypedef __int64 apr_off_t; 377266733Speter#else 378266733Spetertypedef int apr_off_t; 379266733Speter#endif 380266733Spetertypedef int apr_socklen_t; 381266733Spetertypedef apr_uint64_t apr_ino_t; 382266733Speter 383266733Speter#ifdef _WIN64 384266733Speter#define APR_SIZEOF_VOIDP 8 385266733Speter#else 386266733Speter#define APR_SIZEOF_VOIDP 4 387266733Speter#endif 388266733Speter 389266733Speter#if APR_SIZEOF_VOIDP == 8 390266733Spetertypedef apr_uint64_t apr_uintptr_t; 391266733Speter#else 392266733Spetertypedef apr_uint32_t apr_uintptr_t; 393266733Speter#endif 394266733Speter 395266733Speter/* Are we big endian? */ 396266733Speter/* XXX: Fatal assumption on Alpha platforms */ 397266733Speter#define APR_IS_BIGENDIAN 0 398266733Speter 399266733Speter/* Mechanisms to properly type numeric literals */ 400266733Speter 401266733Speter#ifndef __GNUC__ 402266733Speter#define APR_INT64_C(val) (val##i64) 403266733Speter#define APR_UINT64_C(val) (val##Ui64) 404266733Speter#else 405266733Speter#define APR_INT64_C(val) (val##LL) 406266733Speter#define APR_UINT64_C(val) (val##ULL) 407266733Speter#endif 408266733Speter 409266733Speter#ifdef INT16_MIN 410266733Speter#define APR_INT16_MIN INT16_MIN 411266733Speter#else 412266733Speter#define APR_INT16_MIN (-0x7fff - 1) 413266733Speter#endif 414266733Speter 415266733Speter#ifdef INT16_MAX 416266733Speter#define APR_INT16_MAX INT16_MAX 417266733Speter#else 418266733Speter#define APR_INT16_MAX (0x7fff) 419266733Speter#endif 420266733Speter 421266733Speter#ifdef UINT16_MAX 422266733Speter#define APR_UINT16_MAX UINT16_MAX 423266733Speter#else 424266733Speter#define APR_UINT16_MAX (0xffff) 425266733Speter#endif 426266733Speter 427266733Speter#ifdef INT32_MIN 428266733Speter#define APR_INT32_MIN INT32_MIN 429266733Speter#else 430266733Speter#define APR_INT32_MIN (-0x7fffffff - 1) 431266733Speter#endif 432266733Speter 433266733Speter#ifdef INT32_MAX 434266733Speter#define APR_INT32_MAX INT32_MAX 435266733Speter#else 436266733Speter#define APR_INT32_MAX 0x7fffffff 437266733Speter#endif 438266733Speter 439266733Speter#ifdef UINT32_MAX 440266733Speter#define APR_UINT32_MAX UINT32_MAX 441266733Speter#else 442266733Speter#define APR_UINT32_MAX (0xffffffffU) 443266733Speter#endif 444266733Speter 445266733Speter#ifdef INT64_MIN 446266733Speter#define APR_INT64_MIN INT64_MIN 447266733Speter#else 448266733Speter#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 449266733Speter#endif 450266733Speter 451266733Speter#ifdef INT64_MAX 452266733Speter#define APR_INT64_MAX INT64_MAX 453266733Speter#else 454266733Speter#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 455266733Speter#endif 456266733Speter 457266733Speter#ifdef UINT64_MAX 458266733Speter#define APR_UINT64_MAX UINT64_MAX 459266733Speter#else 460266733Speter#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 461266733Speter#endif 462266733Speter 463266733Speter#define APR_SIZE_MAX (~((apr_size_t)0)) 464266733Speter 465266733Speter/* Definitions that APR programs need to work properly. */ 466266733Speter 467266733Speter/** 468266733Speter * APR public API wrap for C++ compilers. 469266733Speter */ 470266733Speter#ifdef __cplusplus 471266733Speter#define APR_BEGIN_DECLS extern "C" { 472266733Speter#define APR_END_DECLS } 473266733Speter#else 474266733Speter#define APR_BEGIN_DECLS 475266733Speter#define APR_END_DECLS 476266733Speter#endif 477266733Speter 478266733Speter/** 479266733Speter * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 480266733Speter * so that they follow the platform's calling convention. 481266733Speter * <PRE> 482266733Speter * 483266733Speter * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 484266733Speter * 485266733Speter * </PRE> 486266733Speter */ 487266733Speter#define APR_THREAD_FUNC __stdcall 488266733Speter 489266733Speter 490266733Speter#if defined(DOXYGEN) || !defined(WIN32) 491266733Speter 492266733Speter/** 493266733Speter * The public APR functions are declared with APR_DECLARE(), so they may 494266733Speter * use the most appropriate calling convention. Public APR functions with 495266733Speter * variable arguments must use APR_DECLARE_NONSTD(). 496266733Speter * 497266733Speter * @remark Both the declaration and implementations must use the same macro. 498266733Speter * 499266733Speter * <PRE> 500266733Speter * APR_DECLARE(rettype) apr_func(args) 501266733Speter * </PRE> 502266733Speter * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 503266733Speter * @remark Note that when APR compiles the library itself, it passes the 504266733Speter * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 505266733Speter * to export public symbols from the dynamic library build.\n 506266733Speter * The user must define the APR_DECLARE_STATIC when compiling to target 507266733Speter * the static APR library on some platforms (e.g. Win32.) The public symbols 508266733Speter * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 509266733Speter * By default, compiling an application and including the APR public 510266733Speter * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 511266733Speter * linked to the dynamic library. 512266733Speter */ 513266733Speter#define APR_DECLARE(type) type 514266733Speter 515266733Speter/** 516266733Speter * The public APR functions using variable arguments are declared with 517266733Speter * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 518266733Speter * @see APR_DECLARE @see APR_DECLARE_DATA 519266733Speter * @remark Both the declaration and implementations must use the same macro. 520266733Speter * <PRE> 521266733Speter * 522266733Speter * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 523266733Speter * 524266733Speter * </PRE> 525266733Speter */ 526266733Speter#define APR_DECLARE_NONSTD(type) type 527266733Speter 528266733Speter/** 529266733Speter * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 530266733Speter * This assures the appropriate indirection is invoked at compile time. 531266733Speter * @see APR_DECLARE @see APR_DECLARE_NONSTD 532266733Speter * @remark Note that the declaration and implementations use different forms, 533266733Speter * but both must include the macro. 534266733Speter * 535266733Speter * <PRE> 536266733Speter * 537266733Speter * extern APR_DECLARE_DATA type apr_variable;\n 538266733Speter * APR_DECLARE_DATA type apr_variable = value; 539266733Speter * 540266733Speter * </PRE> 541266733Speter */ 542266733Speter#define APR_DECLARE_DATA 543266733Speter 544266733Speter#elif defined(APR_DECLARE_STATIC) 545266733Speter#define APR_DECLARE(type) type __stdcall 546266733Speter#define APR_DECLARE_NONSTD(type) type __cdecl 547266733Speter#define APR_DECLARE_DATA 548266733Speter#elif defined(APR_DECLARE_EXPORT) 549266733Speter#define APR_DECLARE(type) __declspec(dllexport) type __stdcall 550266733Speter#define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl 551266733Speter#define APR_DECLARE_DATA __declspec(dllexport) 552266733Speter#else 553266733Speter#define APR_DECLARE(type) __declspec(dllimport) type __stdcall 554266733Speter#define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl 555266733Speter#define APR_DECLARE_DATA __declspec(dllimport) 556266733Speter#endif 557266733Speter 558266733Speter#ifdef _WIN64 559266733Speter#define APR_SSIZE_T_FMT "I64d" 560266733Speter#define APR_SIZE_T_FMT "I64u" 561266733Speter#else 562266733Speter#define APR_SSIZE_T_FMT "d" 563266733Speter#define APR_SIZE_T_FMT "u" 564266733Speter#endif 565266733Speter 566266733Speter#if APR_HAS_LARGE_FILES 567266733Speter#define APR_OFF_T_FMT "I64d" 568266733Speter#else 569266733Speter#define APR_OFF_T_FMT "d" 570266733Speter#endif 571266733Speter 572266733Speter#define APR_PID_T_FMT "d" 573266733Speter 574266733Speter#define APR_INT64_T_FMT "I64d" 575266733Speter#define APR_UINT64_T_FMT "I64u" 576266733Speter#define APR_UINT64_T_HEX_FMT "I64x" 577266733Speter 578266733Speter/* No difference between PROC and GLOBAL mutex */ 579266733Speter#define APR_PROC_MUTEX_IS_GLOBAL 1 580266733Speter 581266733Speter/* Local machine definition for console and log output. */ 582266733Speter#define APR_EOL_STR "\r\n" 583266733Speter 584266733Spetertypedef int apr_wait_t; 585266733Speter 586266733Speter#if APR_HAS_UNICODE_FS 587266733Speter/* An arbitrary size that is digestable. True max is a bit less than 32000 */ 588266733Speter#define APR_PATH_MAX 8192 589266733Speter#else /* !APR_HAS_UNICODE_FS */ 590266733Speter#define APR_PATH_MAX MAX_PATH 591266733Speter#endif 592266733Speter 593266733Speter#define APR_DSOPATH "PATH" 594266733Speter 595266733Speter/** @} */ 596266733Speter 597266733Speter/* Definitions that only Win32 programs need to compile properly. */ 598266733Speter 599266733Speter/* XXX These simply don't belong here, perhaps in apr_portable.h 600266733Speter * based on some APR_HAVE_PID/GID/UID? 601266733Speter */ 602266733Speter#ifndef __GNUC__ 603266733Spetertypedef int pid_t; 604266733Speter#endif 605266733Spetertypedef int uid_t; 606266733Spetertypedef int gid_t; 607266733Speter 608266733Speter/* Win32 .h ommissions we really need */ 609266733Speter#define STDIN_FILENO 0 610266733Speter#define STDOUT_FILENO 1 611266733Speter#define STDERR_FILENO 2 612266733Speter 613266733Speter#if APR_HAVE_IPV6 614266733Speter 615266733Speter/* Appears in later flavors, not the originals. */ 616266733Speter#ifndef in_addr6 617266733Speter#define in6_addr in_addr6 618266733Speter#endif 619266733Speter 620266733Speter#ifndef WS2TCPIP_INLINE 621266733Speter#define IN6_IS_ADDR_V4MAPPED(a) \ 622266733Speter ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ 623266733Speter && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) 624266733Speter#endif 625266733Speter 626266733Speter#endif /* APR_HAS_IPV6 */ 627266733Speter 628266733Speter#ifdef __cplusplus 629266733Speter} 630266733Speter#endif 631266733Speter 632266733Speter/* Done with badly written headers 633266733Speter */ 634266733Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 635266733Speter#pragma warning(pop) 636266733Speter#pragma warning(disable: 4996) 637266733Speter#endif 638266733Speter 639266733Speter#endif /* WIN32 */ 640266733Speter 641266733Speter#endif /* APR_H */ 642