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 28362181Sdim * 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 */ 63362181Sdim#if defined(_MSC_VER) 64266733Speter#pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244) 65362181Sdim#endif 66266733Speter 67266733Speter/* Ignore Microsoft's interpretation of secure development 68266733Speter * and the POSIX string handling API 69266733Speter */ 70266733Speter#if defined(_MSC_VER) && _MSC_VER >= 1400 71266733Speter#ifndef _CRT_SECURE_NO_DEPRECATE 72266733Speter#define _CRT_SECURE_NO_DEPRECATE 73266733Speter#endif 74266733Speter#pragma warning(disable: 4996) 75266733Speter#endif 76266733Speter 77266733Speter/* Has windows.h already been included? If so, our preferences don't matter, 78266733Speter * but we will still need the winsock things no matter what was included. 79266733Speter * If not, include a restricted set of windows headers to our tastes. 80266733Speter */ 81266733Speter#ifndef _WINDOWS_ 82266733Speter#ifndef WIN32_LEAN_AND_MEAN 83266733Speter#define WIN32_LEAN_AND_MEAN 84266733Speter#endif 85266733Speter#ifndef _WIN32_WINNT 86266733Speter#define _WIN32_WINNT @win32_winnt_str@ 87266733Speter#endif 88266733Speter#ifndef NOUSER 89266733Speter#define NOUSER 90266733Speter#endif 91266733Speter#ifndef NOMCX 92266733Speter#define NOMCX 93266733Speter#endif 94266733Speter#ifndef NOIME 95266733Speter#define NOIME 96266733Speter#endif 97266733Speter#include <windows.h> 98266733Speter/* 99266733Speter * Add a _very_few_ declarations missing from the restricted set of headers 100266733Speter * (If this list becomes extensive, re-enable the required headers above!) 101266733Speter * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now 102266733Speter */ 103266733Speter#define SW_HIDE 0 104266733Speter#ifndef _WIN32_WCE 105266733Speter#include <winsock2.h> 106266733Speter#include <ws2tcpip.h> 107266733Speter#include <mswsock.h> 108266733Speter#else 109266733Speter#include <winsock.h> 110266733Speter#endif 111266733Speter#endif /* !_WINDOWS_ */ 112266733Speter 113266733Speter/** 114266733Speter * @defgroup APR Apache Portability Runtime library 115266733Speter * @{ 116266733Speter */ 117266733Speter/** 118266733Speter * @defgroup apr_platform Platform Definitions 119266733Speter * @{ 120266733Speter * @warning 121266733Speter * <strong><em>The actual values of macros and typedefs on this page<br> 122266733Speter * are platform specific and should NOT be relied upon!</em></strong> 123266733Speter */ 124266733Speter 125266733Speter#define APR_INLINE __inline 126266733Speter#define APR_HAS_INLINE 1 127266733Speter#if !defined(__GNUC__) && !defined(__attribute__) 128266733Speter#define __attribute__(__x) 129266733Speter#endif 130266733Speter 131266733Speter#ifndef _WIN32_WCE 132266733Speter#define APR_HAVE_ARPA_INET_H 0 133266733Speter#define APR_HAVE_CONIO_H 1 134266733Speter#define APR_HAVE_CRYPT_H 0 135266733Speter#define APR_HAVE_CTYPE_H 1 136266733Speter#define APR_HAVE_DIRENT_H 0 137266733Speter#define APR_HAVE_ERRNO_H 1 138266733Speter#define APR_HAVE_FCNTL_H 1 139266733Speter#define APR_HAVE_IO_H 1 140266733Speter#define APR_HAVE_LIMITS_H 1 141266733Speter#define APR_HAVE_NETDB_H 0 142266733Speter#define APR_HAVE_NETINET_IN_H 0 143266733Speter#define APR_HAVE_NETINET_SCTP_H 0 144266733Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 145266733Speter#define APR_HAVE_NETINET_TCP_H 0 146266733Speter#define APR_HAVE_PTHREAD_H 0 147266733Speter#define APR_HAVE_SEMAPHORE_H 0 148266733Speter#define APR_HAVE_SIGNAL_H 1 149266733Speter#define APR_HAVE_STDARG_H 1 150266733Speter#define APR_HAVE_STDINT_H 0 151266733Speter#define APR_HAVE_STDIO_H 1 152266733Speter#define APR_HAVE_STDLIB_H 1 153266733Speter#define APR_HAVE_STRING_H 1 154266733Speter#define APR_HAVE_STRINGS_H 0 155266733Speter#define APR_HAVE_SYS_IOCTL_H 0 156266733Speter#define APR_HAVE_SYS_SENDFILE_H 0 157266733Speter#define APR_HAVE_SYS_SIGNAL_H 0 158266733Speter#define APR_HAVE_SYS_SOCKET_H 0 159266733Speter#define APR_HAVE_SYS_SOCKIO_H 0 160266733Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 161266733Speter#define APR_HAVE_SYS_TIME_H 0 162266733Speter#define APR_HAVE_SYS_TYPES_H 1 163266733Speter#define APR_HAVE_SYS_UIO_H 0 164266733Speter#define APR_HAVE_SYS_UN_H 0 165266733Speter#define APR_HAVE_SYS_WAIT_H 0 166266733Speter#define APR_HAVE_TIME_H 1 167266733Speter#define APR_HAVE_UNISTD_H 0 168266733Speter#define APR_HAVE_STDDEF_H 1 169266733Speter#define APR_HAVE_PROCESS_H 1 170266733Speter#else 171266733Speter#define APR_HAVE_ARPA_INET_H 0 172266733Speter#define APR_HAVE_CONIO_H 0 173266733Speter#define APR_HAVE_CRYPT_H 0 174266733Speter#define APR_HAVE_CTYPE_H 0 175266733Speter#define APR_HAVE_DIRENT_H 0 176266733Speter#define APR_HAVE_ERRNO_H 0 177266733Speter#define APR_HAVE_FCNTL_H 0 178266733Speter#define APR_HAVE_IO_H 0 179266733Speter#define APR_HAVE_LIMITS_H 0 180266733Speter#define APR_HAVE_NETDB_H 0 181266733Speter#define APR_HAVE_NETINET_IN_H 0 182266733Speter#define APR_HAVE_NETINET_SCTP_H 0 183266733Speter#define APR_HAVE_NETINET_SCTP_UIO_H 0 184266733Speter#define APR_HAVE_NETINET_TCP_H 0 185266733Speter#define APR_HAVE_PTHREAD_H 0 186266733Speter#define APR_HAVE_SEMAPHORE_H 0 187266733Speter#define APR_HAVE_SIGNAL_H 0 188266733Speter#define APR_HAVE_STDARG_H 0 189266733Speter#define APR_HAVE_STDINT_H 0 190266733Speter#define APR_HAVE_STDIO_H 1 191266733Speter#define APR_HAVE_STDLIB_H 1 192266733Speter#define APR_HAVE_STRING_H 1 193266733Speter#define APR_HAVE_STRINGS_H 0 194266733Speter#define APR_HAVE_SYS_IOCTL_H 0 195266733Speter#define APR_HAVE_SYS_SENDFILE_H 0 196266733Speter#define APR_HAVE_SYS_SIGNAL_H 0 197266733Speter#define APR_HAVE_SYS_SOCKET_H 0 198266733Speter#define APR_HAVE_SYS_SOCKIO_H 0 199266733Speter#define APR_HAVE_SYS_SYSLIMITS_H 0 200266733Speter#define APR_HAVE_SYS_TIME_H 0 201266733Speter#define APR_HAVE_SYS_TYPES_H 0 202266733Speter#define APR_HAVE_SYS_UIO_H 0 203266733Speter#define APR_HAVE_SYS_UN_H 0 204266733Speter#define APR_HAVE_SYS_WAIT_H 0 205266733Speter#define APR_HAVE_TIME_H 0 206266733Speter#define APR_HAVE_UNISTD_H 0 207266733Speter#define APR_HAVE_STDDEF_H 0 208266733Speter#define APR_HAVE_PROCESS_H 0 209266733Speter#endif 210266733Speter 211266733Speter/** @} */ 212266733Speter/** @} */ 213266733Speter 214362181Sdim/* We don't include our conditional headers within the doxyblocks 215362181Sdim * or the extern "C" namespace 216266733Speter */ 217266733Speter 218266733Speter#if APR_HAVE_STDLIB_H 219266733Speter#include <stdlib.h> 220266733Speter#endif 221362181Sdim 222266733Speter#if APR_HAVE_STDIO_H 223266733Speter#include <stdio.h> 224266733Speter#endif 225362181Sdim 226266733Speter#if APR_HAVE_SYS_TYPES_H 227266733Speter#include <sys/types.h> 228266733Speter#endif 229362181Sdim 230266733Speter#if APR_HAVE_STDDEF_H 231266733Speter#include <stddef.h> 232266733Speter#endif 233362181Sdim 234362181Sdim#if APR_HAVE_SYS_SOCKET_H 235362181Sdim#include <sys/socket.h> 236362181Sdim#endif 237362181Sdim 238362181Sdim#if APR_HAVE_STDINT_H 239362181Sdim#include <stdint.h> 240362181Sdim#endif 241362181Sdim 242362181Sdim#if APR_HAVE_SYS_WAIT_H 243362181Sdim#include <sys/wait.h> 244362181Sdim#endif 245362181Sdim 246266733Speter#if APR_HAVE_TIME_H 247266733Speter#include <time.h> 248266733Speter#endif 249362181Sdim 250266733Speter#if APR_HAVE_PROCESS_H 251266733Speter#include <process.h> 252266733Speter#endif 253266733Speter 254266733Speter#ifdef __cplusplus 255266733Speterextern "C" { 256266733Speter#endif 257266733Speter 258266733Speter/** 259266733Speter * @addtogroup apr_platform 260266733Speter * @ingroup APR 261266733Speter * @{ 262266733Speter */ 263266733Speter 264266733Speter#define APR_HAVE_SHMEM_MMAP_TMP 0 265266733Speter#define APR_HAVE_SHMEM_MMAP_SHM 0 266266733Speter#define APR_HAVE_SHMEM_MMAP_ZERO 0 267266733Speter#define APR_HAVE_SHMEM_SHMGET_ANON 0 268266733Speter#define APR_HAVE_SHMEM_SHMGET 0 269266733Speter#define APR_HAVE_SHMEM_MMAP_ANON 0 270266733Speter#define APR_HAVE_SHMEM_BEOS 0 271266733Speter 272266733Speter#define APR_USE_SHMEM_MMAP_TMP 0 273266733Speter#define APR_USE_SHMEM_MMAP_SHM 0 274266733Speter#define APR_USE_SHMEM_MMAP_ZERO 0 275266733Speter#define APR_USE_SHMEM_SHMGET_ANON 0 276266733Speter#define APR_USE_SHMEM_SHMGET 0 277266733Speter#define APR_USE_SHMEM_MMAP_ANON 0 278266733Speter#define APR_USE_SHMEM_BEOS 0 279266733Speter 280362181Sdim#define APR_USE_FLOCK_SERIALIZE 0 281266733Speter#define APR_USE_POSIXSEM_SERIALIZE 0 282266733Speter#define APR_USE_SYSVSEM_SERIALIZE 0 283266733Speter#define APR_USE_FCNTL_SERIALIZE 0 284362181Sdim#define APR_USE_PROC_PTHREAD_SERIALIZE 0 285362181Sdim#define APR_USE_PTHREAD_SERIALIZE 0 286266733Speter 287266733Speter#define APR_HAS_FLOCK_SERIALIZE 0 288266733Speter#define APR_HAS_SYSVSEM_SERIALIZE 0 289266733Speter#define APR_HAS_POSIXSEM_SERIALIZE 0 290266733Speter#define APR_HAS_FCNTL_SERIALIZE 0 291266733Speter#define APR_HAS_PROC_PTHREAD_SERIALIZE 0 292266733Speter 293266733Speter#define APR_PROCESS_LOCK_IS_GLOBAL 0 294266733Speter 295266733Speter#define APR_HAVE_CORKABLE_TCP 0 296266733Speter#define APR_HAVE_GETRLIMIT 0 297266733Speter#define APR_HAVE_ICONV 0 298266733Speter#define APR_HAVE_IN_ADDR 1 299266733Speter#define APR_HAVE_INET_ADDR 1 300266733Speter#define APR_HAVE_INET_NETWORK 0 301266733Speter#define APR_HAVE_IPV6 @apr_have_ipv6_10@ 302362181Sdim#define APR_HAVE_SOCKADDR_UN 0 303266733Speter#define APR_HAVE_MEMMOVE 1 304266733Speter#define APR_HAVE_SETRLIMIT 0 305266733Speter#define APR_HAVE_SIGACTION 0 306266733Speter#define APR_HAVE_SIGSUSPEND 0 307266733Speter#define APR_HAVE_SIGWAIT 0 308266733Speter#define APR_HAVE_SA_STORAGE 0 309266733Speter#define APR_HAVE_STRCASECMP 0 310266733Speter#define APR_HAVE_STRDUP 1 311266733Speter#define APR_HAVE_STRNCASECMP 0 312266733Speter#define APR_HAVE_STRSTR 1 313266733Speter#define APR_HAVE_MEMCHR 1 314266733Speter#define APR_HAVE_STRUCT_RLIMIT 0 315266733Speter#define APR_HAVE_UNION_SEMUN 0 316266733Speter#define APR_HAVE_SCTP 0 317266733Speter#define APR_HAVE_IOVEC 0 318266733Speter 319266733Speter#ifndef _WIN32_WCE 320266733Speter#define APR_HAVE_STRICMP 1 321266733Speter#define APR_HAVE_STRNICMP 1 322266733Speter#else 323266733Speter#define APR_HAVE_STRICMP 0 324266733Speter#define APR_HAVE_STRNICMP 0 325266733Speter#endif 326266733Speter 327266733Speter/* APR Feature Macros */ 328266733Speter#define APR_HAS_SHARED_MEMORY 1 329266733Speter#define APR_HAS_THREADS 1 330266733Speter#define APR_HAS_MMAP 1 331266733Speter#define APR_HAS_FORK 0 332266733Speter#define APR_HAS_RANDOM 1 333266733Speter#define APR_HAS_OTHER_CHILD 1 334266733Speter#define APR_HAS_DSO 1 335266733Speter#define APR_HAS_SO_ACCEPTFILTER 0 336266733Speter#define APR_HAS_UNICODE_FS 1 337266733Speter#define APR_HAS_PROC_INVOKED 1 338266733Speter#define APR_HAS_OS_UUID 1 339362181Sdim#define APR_HAS_TIMEDLOCKS 1 340266733Speter 341266733Speter#ifndef _WIN32_WCE 342266733Speter#define APR_HAS_SENDFILE 1 343266733Speter#define APR_HAS_USER 1 344266733Speter#define APR_HAS_LARGE_FILES 1 345266733Speter#define APR_HAS_XTHREAD_FILES 1 346266733Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1 347266733Speter#else 348266733Speter#define APR_HAS_SENDFILE 0 349266733Speter#define APR_HAS_USER 0 350266733Speter#define APR_HAS_LARGE_FILES 0 351266733Speter#define APR_HAS_XTHREAD_FILES 0 352266733Speter#define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0 353266733Speter#endif 354266733Speter 355266733Speter/* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible 356266733Speter * to poll on files/pipes. 357266733Speter */ 358266733Speter#define APR_FILES_AS_SOCKETS 0 359266733Speter 360266733Speter/* This macro indicates whether or not EBCDIC is the native character set. 361266733Speter */ 362266733Speter#define APR_CHARSET_EBCDIC 0 363266733Speter 364266733Speter/* If we have a TCP implementation that can be "corked", what flag 365266733Speter * do we use? 366266733Speter */ 367266733Speter#define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@ 368266733Speter 369266733Speter/* Is the TCP_NODELAY socket option inherited from listening sockets? 370266733Speter */ 371266733Speter#define APR_TCP_NODELAY_INHERITED 1 372266733Speter 373266733Speter/* Is the O_NONBLOCK flag inherited from listening sockets? 374266733Speter */ 375362181Sdim#define APR_O_NONBLOCK_INHERITED 1 376266733Speter 377266733Speter/* Typedefs that APR needs. */ 378266733Speter 379266733Spetertypedef unsigned char apr_byte_t; 380266733Speter 381266733Spetertypedef short apr_int16_t; 382266733Spetertypedef unsigned short apr_uint16_t; 383266733Speter 384266733Spetertypedef int apr_int32_t; 385266733Spetertypedef unsigned int apr_uint32_t; 386266733Speter 387266733Spetertypedef __int64 apr_int64_t; 388266733Spetertypedef unsigned __int64 apr_uint64_t; 389266733Speter 390266733Spetertypedef size_t apr_size_t; 391266733Speter#if APR_HAVE_STDDEF_H 392266733Spetertypedef ptrdiff_t apr_ssize_t; 393266733Speter#else 394266733Spetertypedef int apr_ssize_t; 395266733Speter#endif 396266733Speter#if APR_HAS_LARGE_FILES 397266733Spetertypedef __int64 apr_off_t; 398266733Speter#else 399266733Spetertypedef int apr_off_t; 400266733Speter#endif 401266733Spetertypedef int apr_socklen_t; 402266733Spetertypedef apr_uint64_t apr_ino_t; 403266733Speter 404266733Speter#ifdef _WIN64 405266733Speter#define APR_SIZEOF_VOIDP 8 406266733Speter#else 407266733Speter#define APR_SIZEOF_VOIDP 4 408266733Speter#endif 409266733Speter 410266733Speter#if APR_SIZEOF_VOIDP == 8 411266733Spetertypedef apr_uint64_t apr_uintptr_t; 412266733Speter#else 413266733Spetertypedef apr_uint32_t apr_uintptr_t; 414266733Speter#endif 415266733Speter 416266733Speter/* Are we big endian? */ 417266733Speter/* XXX: Fatal assumption on Alpha platforms */ 418266733Speter#define APR_IS_BIGENDIAN 0 419266733Speter 420266733Speter/* Mechanisms to properly type numeric literals */ 421266733Speter 422266733Speter#ifndef __GNUC__ 423266733Speter#define APR_INT64_C(val) (val##i64) 424266733Speter#define APR_UINT64_C(val) (val##Ui64) 425266733Speter#else 426266733Speter#define APR_INT64_C(val) (val##LL) 427266733Speter#define APR_UINT64_C(val) (val##ULL) 428266733Speter#endif 429266733Speter 430266733Speter#ifdef INT16_MIN 431266733Speter#define APR_INT16_MIN INT16_MIN 432266733Speter#else 433266733Speter#define APR_INT16_MIN (-0x7fff - 1) 434266733Speter#endif 435266733Speter 436266733Speter#ifdef INT16_MAX 437266733Speter#define APR_INT16_MAX INT16_MAX 438266733Speter#else 439266733Speter#define APR_INT16_MAX (0x7fff) 440266733Speter#endif 441266733Speter 442266733Speter#ifdef UINT16_MAX 443266733Speter#define APR_UINT16_MAX UINT16_MAX 444266733Speter#else 445266733Speter#define APR_UINT16_MAX (0xffff) 446266733Speter#endif 447266733Speter 448266733Speter#ifdef INT32_MIN 449266733Speter#define APR_INT32_MIN INT32_MIN 450266733Speter#else 451266733Speter#define APR_INT32_MIN (-0x7fffffff - 1) 452266733Speter#endif 453266733Speter 454266733Speter#ifdef INT32_MAX 455266733Speter#define APR_INT32_MAX INT32_MAX 456266733Speter#else 457266733Speter#define APR_INT32_MAX 0x7fffffff 458266733Speter#endif 459266733Speter 460266733Speter#ifdef UINT32_MAX 461266733Speter#define APR_UINT32_MAX UINT32_MAX 462266733Speter#else 463266733Speter#define APR_UINT32_MAX (0xffffffffU) 464266733Speter#endif 465266733Speter 466266733Speter#ifdef INT64_MIN 467266733Speter#define APR_INT64_MIN INT64_MIN 468266733Speter#else 469266733Speter#define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1) 470266733Speter#endif 471266733Speter 472266733Speter#ifdef INT64_MAX 473266733Speter#define APR_INT64_MAX INT64_MAX 474266733Speter#else 475266733Speter#define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff) 476266733Speter#endif 477266733Speter 478266733Speter#ifdef UINT64_MAX 479266733Speter#define APR_UINT64_MAX UINT64_MAX 480266733Speter#else 481266733Speter#define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff) 482266733Speter#endif 483266733Speter 484266733Speter#define APR_SIZE_MAX (~((apr_size_t)0)) 485266733Speter 486266733Speter/* Definitions that APR programs need to work properly. */ 487266733Speter 488266733Speter/** 489266733Speter * APR public API wrap for C++ compilers. 490266733Speter */ 491266733Speter#ifdef __cplusplus 492266733Speter#define APR_BEGIN_DECLS extern "C" { 493266733Speter#define APR_END_DECLS } 494266733Speter#else 495266733Speter#define APR_BEGIN_DECLS 496266733Speter#define APR_END_DECLS 497266733Speter#endif 498266733Speter 499266733Speter/** 500266733Speter * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC, 501266733Speter * so that they follow the platform's calling convention. 502266733Speter * <PRE> 503266733Speter * 504266733Speter * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data); 505266733Speter * 506266733Speter * </PRE> 507266733Speter */ 508266733Speter#define APR_THREAD_FUNC __stdcall 509266733Speter 510266733Speter 511266733Speter#if defined(DOXYGEN) || !defined(WIN32) 512266733Speter 513266733Speter/** 514266733Speter * The public APR functions are declared with APR_DECLARE(), so they may 515266733Speter * use the most appropriate calling convention. Public APR functions with 516266733Speter * variable arguments must use APR_DECLARE_NONSTD(). 517266733Speter * 518266733Speter * @remark Both the declaration and implementations must use the same macro. 519266733Speter * 520266733Speter * <PRE> 521266733Speter * APR_DECLARE(rettype) apr_func(args) 522266733Speter * </PRE> 523266733Speter * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA 524266733Speter * @remark Note that when APR compiles the library itself, it passes the 525266733Speter * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32) 526266733Speter * to export public symbols from the dynamic library build.\n 527266733Speter * The user must define the APR_DECLARE_STATIC when compiling to target 528266733Speter * the static APR library on some platforms (e.g. Win32.) The public symbols 529266733Speter * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n 530266733Speter * By default, compiling an application and including the APR public 531266733Speter * headers, without defining APR_DECLARE_STATIC, will prepare the code to be 532266733Speter * linked to the dynamic library. 533266733Speter */ 534266733Speter#define APR_DECLARE(type) type 535266733Speter 536266733Speter/** 537266733Speter * The public APR functions using variable arguments are declared with 538266733Speter * APR_DECLARE_NONSTD(), as they must follow the C language calling convention. 539266733Speter * @see APR_DECLARE @see APR_DECLARE_DATA 540266733Speter * @remark Both the declaration and implementations must use the same macro. 541266733Speter * <PRE> 542266733Speter * 543266733Speter * APR_DECLARE_NONSTD(rettype) apr_func(args, ...); 544266733Speter * 545266733Speter * </PRE> 546266733Speter */ 547266733Speter#define APR_DECLARE_NONSTD(type) type 548266733Speter 549266733Speter/** 550266733Speter * The public APR variables are declared with AP_MODULE_DECLARE_DATA. 551266733Speter * This assures the appropriate indirection is invoked at compile time. 552266733Speter * @see APR_DECLARE @see APR_DECLARE_NONSTD 553266733Speter * @remark Note that the declaration and implementations use different forms, 554266733Speter * but both must include the macro. 555266733Speter * 556266733Speter * <PRE> 557266733Speter * 558266733Speter * extern APR_DECLARE_DATA type apr_variable;\n 559266733Speter * APR_DECLARE_DATA type apr_variable = value; 560266733Speter * 561266733Speter * </PRE> 562266733Speter */ 563266733Speter#define APR_DECLARE_DATA 564266733Speter 565266733Speter#elif defined(APR_DECLARE_STATIC) 566266733Speter#define APR_DECLARE(type) type __stdcall 567266733Speter#define APR_DECLARE_NONSTD(type) type __cdecl 568266733Speter#define APR_DECLARE_DATA 569266733Speter#elif defined(APR_DECLARE_EXPORT) 570266733Speter#define APR_DECLARE(type) __declspec(dllexport) type __stdcall 571266733Speter#define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl 572266733Speter#define APR_DECLARE_DATA __declspec(dllexport) 573266733Speter#else 574266733Speter#define APR_DECLARE(type) __declspec(dllimport) type __stdcall 575266733Speter#define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl 576266733Speter#define APR_DECLARE_DATA __declspec(dllimport) 577266733Speter#endif 578266733Speter 579266733Speter#ifdef _WIN64 580266733Speter#define APR_SSIZE_T_FMT "I64d" 581266733Speter#define APR_SIZE_T_FMT "I64u" 582266733Speter#else 583266733Speter#define APR_SSIZE_T_FMT "d" 584266733Speter#define APR_SIZE_T_FMT "u" 585266733Speter#endif 586266733Speter 587266733Speter#if APR_HAS_LARGE_FILES 588266733Speter#define APR_OFF_T_FMT "I64d" 589266733Speter#else 590266733Speter#define APR_OFF_T_FMT "d" 591266733Speter#endif 592266733Speter 593266733Speter#define APR_PID_T_FMT "d" 594266733Speter 595266733Speter#define APR_INT64_T_FMT "I64d" 596266733Speter#define APR_UINT64_T_FMT "I64u" 597266733Speter#define APR_UINT64_T_HEX_FMT "I64x" 598266733Speter 599266733Speter/* No difference between PROC and GLOBAL mutex */ 600266733Speter#define APR_PROC_MUTEX_IS_GLOBAL 1 601266733Speter 602266733Speter/* Local machine definition for console and log output. */ 603266733Speter#define APR_EOL_STR "\r\n" 604266733Speter 605266733Spetertypedef int apr_wait_t; 606266733Speter 607266733Speter#if APR_HAS_UNICODE_FS 608266733Speter/* An arbitrary size that is digestable. True max is a bit less than 32000 */ 609266733Speter#define APR_PATH_MAX 8192 610266733Speter#else /* !APR_HAS_UNICODE_FS */ 611266733Speter#define APR_PATH_MAX MAX_PATH 612266733Speter#endif 613266733Speter 614266733Speter#define APR_DSOPATH "PATH" 615266733Speter 616266733Speter/** @} */ 617266733Speter 618266733Speter/* Definitions that only Win32 programs need to compile properly. */ 619266733Speter 620266733Speter/* XXX These simply don't belong here, perhaps in apr_portable.h 621266733Speter * based on some APR_HAVE_PID/GID/UID? 622266733Speter */ 623266733Speter#ifndef __GNUC__ 624266733Spetertypedef int pid_t; 625266733Speter#endif 626266733Spetertypedef int uid_t; 627266733Spetertypedef int gid_t; 628266733Speter 629266733Speter/* Win32 .h ommissions we really need */ 630266733Speter#define STDIN_FILENO 0 631266733Speter#define STDOUT_FILENO 1 632266733Speter#define STDERR_FILENO 2 633266733Speter 634266733Speter#if APR_HAVE_IPV6 635266733Speter 636266733Speter/* Appears in later flavors, not the originals. */ 637266733Speter#ifndef in_addr6 638266733Speter#define in6_addr in_addr6 639266733Speter#endif 640266733Speter 641266733Speter#ifndef WS2TCPIP_INLINE 642266733Speter#define IN6_IS_ADDR_V4MAPPED(a) \ 643266733Speter ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \ 644266733Speter && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff))) 645266733Speter#endif 646266733Speter 647362181Sdim#endif /* APR_HAVE_IPV6 */ 648266733Speter 649266733Speter#ifdef __cplusplus 650266733Speter} 651266733Speter#endif 652266733Speter 653362181Sdim/* Done with badly written headers, leave 'deprecated CRT' undeprecated 654266733Speter */ 655266733Speter#if defined(_MSC_VER) && _MSC_VER >= 1200 656266733Speter#pragma warning(pop) 657362181Sdim#if _MSC_VER >= 1400 658266733Speter#pragma warning(disable: 4996) 659266733Speter#endif 660362181Sdim#endif 661266733Speter 662266733Speter#endif /* WIN32 */ 663266733Speter 664266733Speter#endif /* APR_H */ 665