Annotation of win32/apache22/srclib/apr/include/apr.h, revision 1.1
1.1 ! moko 1: /* Licensed to the Apache Software Foundation (ASF) under one or more
! 2: * contributor license agreements. See the NOTICE file distributed with
! 3: * this work for additional information regarding copyright ownership.
! 4: * The ASF licenses this file to You under the Apache License, Version 2.0
! 5: * (the "License"); you may not use this file except in compliance with
! 6: * the License. You may obtain a copy of the License at
! 7: *
! 8: * http://www.apache.org/licenses/LICENSE-2.0
! 9: *
! 10: * Unless required by applicable law or agreed to in writing, software
! 11: * distributed under the License is distributed on an "AS IS" BASIS,
! 12: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
! 13: * See the License for the specific language governing permissions and
! 14: * limitations under the License.
! 15: */
! 16:
! 17:
! 18: #ifndef APR_H
! 19: #define APR_H
! 20:
! 21: /* GENERATED FILE WARNING! DO NOT EDIT apr.h
! 22: *
! 23: * You must modify apr.hw instead.
! 24: *
! 25: * And please, make an effort to stub apr.hnw and apr.h.in in the process.
! 26: *
! 27: * This is the Win32 specific version of apr.h. It is copied from
! 28: * apr.hw by the apr.dsp and libapr.dsp projects.
! 29: */
! 30:
! 31: /**
! 32: * @file apr.h
! 33: * @brief APR Platform Definitions
! 34: * @remark This is a generated header generated from include/apr.h.in by
! 35: * ./configure, or copied from include/apr.hw or include/apr.hnw
! 36: * for Win32 or Netware by those build environments, respectively.
! 37: */
! 38:
! 39: /* Make sure we have our platform identifier macro defined we ask for later.
! 40: */
! 41: #if defined(_WIN32) && !defined(WIN32)
! 42: #define WIN32 1
! 43: #endif
! 44:
! 45: #if defined(WIN32) || defined(DOXYGEN)
! 46:
! 47: /* Ignore most warnings (back down to /W3) for poorly constructed headers
! 48: */
! 49: #if defined(_MSC_VER) && _MSC_VER >= 1200
! 50: #pragma warning(push, 3)
! 51: #endif
! 52:
! 53: /* disable or reduce the frequency of...
! 54: * C4057: indirection to slightly different base types
! 55: * C4075: slight indirection changes (unsigned short* vs short[])
! 56: * C4100: unreferenced formal parameter
! 57: * C4127: conditional expression is constant
! 58: * C4163: '_rotl64' : not available as an intrinsic function
! 59: * C4201: nonstandard extension nameless struct/unions
! 60: * C4244: int to char/short - precision loss
! 61: * C4514: unreferenced inline function removed
! 62: */
! 63: #pragma warning(disable: 4100 4127 4163 4201 4514; once: 4057 4075 4244)
! 64:
! 65: /* Ignore Microsoft's interpretation of secure development
! 66: * and the POSIX string handling API
! 67: */
! 68: #if defined(_MSC_VER) && _MSC_VER >= 1400
! 69: #ifndef _CRT_SECURE_NO_DEPRECATE
! 70: #define _CRT_SECURE_NO_DEPRECATE
! 71: #endif
! 72: #pragma warning(disable: 4996)
! 73: #endif
! 74:
! 75: /* Has windows.h already been included? If so, our preferences don't matter,
! 76: * but we will still need the winsock things no matter what was included.
! 77: * If not, include a restricted set of windows headers to our tastes.
! 78: */
! 79: #ifndef _WINDOWS_
! 80: #ifndef WIN32_LEAN_AND_MEAN
! 81: #define WIN32_LEAN_AND_MEAN
! 82: #endif
! 83: #ifndef _WIN32_WINNT
! 84:
! 85: /* Restrict the server to a subset of Windows XP header files by default
! 86: */
! 87: #define _WIN32_WINNT 0x0501
! 88: #endif
! 89: #ifndef NOUSER
! 90: #define NOUSER
! 91: #endif
! 92: #ifndef NOMCX
! 93: #define NOMCX
! 94: #endif
! 95: #ifndef NOIME
! 96: #define NOIME
! 97: #endif
! 98: #include <windows.h>
! 99: /*
! 100: * Add a _very_few_ declarations missing from the restricted set of headers
! 101: * (If this list becomes extensive, re-enable the required headers above!)
! 102: * winsock headers were excluded by WIN32_LEAN_AND_MEAN, so include them now
! 103: */
! 104: #define SW_HIDE 0
! 105: #ifndef _WIN32_WCE
! 106: #include <winsock2.h>
! 107: #include <ws2tcpip.h>
! 108: #include <mswsock.h>
! 109: #else
! 110: #include <winsock.h>
! 111: #endif
! 112: #endif /* !_WINDOWS_ */
! 113:
! 114: /**
! 115: * @defgroup APR Apache Portability Runtime library
! 116: * @{
! 117: */
! 118: /**
! 119: * @defgroup apr_platform Platform Definitions
! 120: * @{
! 121: * @warning
! 122: * <strong><em>The actual values of macros and typedefs on this page<br>
! 123: * are platform specific and should NOT be relied upon!</em></strong>
! 124: */
! 125:
! 126: #define APR_INLINE __inline
! 127: #define APR_HAS_INLINE 1
! 128: #if !defined(__GNUC__) && !defined(__attribute__)
! 129: #define __attribute__(__x)
! 130: #endif
! 131:
! 132: #ifndef _WIN32_WCE
! 133: #define APR_HAVE_ARPA_INET_H 0
! 134: #define APR_HAVE_CONIO_H 1
! 135: #define APR_HAVE_CRYPT_H 0
! 136: #define APR_HAVE_CTYPE_H 1
! 137: #define APR_HAVE_DIRENT_H 0
! 138: #define APR_HAVE_ERRNO_H 1
! 139: #define APR_HAVE_FCNTL_H 1
! 140: #define APR_HAVE_IO_H 1
! 141: #define APR_HAVE_LIMITS_H 1
! 142: #define APR_HAVE_NETDB_H 0
! 143: #define APR_HAVE_NETINET_IN_H 0
! 144: #define APR_HAVE_NETINET_SCTP_H 0
! 145: #define APR_HAVE_NETINET_SCTP_UIO_H 0
! 146: #define APR_HAVE_NETINET_TCP_H 0
! 147: #define APR_HAVE_PTHREAD_H 0
! 148: #define APR_HAVE_SEMAPHORE_H 0
! 149: #define APR_HAVE_SIGNAL_H 1
! 150: #define APR_HAVE_STDARG_H 1
! 151: #define APR_HAVE_STDINT_H 0
! 152: #define APR_HAVE_STDIO_H 1
! 153: #define APR_HAVE_STDLIB_H 1
! 154: #define APR_HAVE_STRING_H 1
! 155: #define APR_HAVE_STRINGS_H 0
! 156: #define APR_HAVE_SYS_IOCTL_H 0
! 157: #define APR_HAVE_SYS_SENDFILE_H 0
! 158: #define APR_HAVE_SYS_SIGNAL_H 0
! 159: #define APR_HAVE_SYS_SOCKET_H 0
! 160: #define APR_HAVE_SYS_SOCKIO_H 0
! 161: #define APR_HAVE_SYS_SYSLIMITS_H 0
! 162: #define APR_HAVE_SYS_TIME_H 0
! 163: #define APR_HAVE_SYS_TYPES_H 1
! 164: #define APR_HAVE_SYS_UIO_H 0
! 165: #define APR_HAVE_SYS_UN_H 0
! 166: #define APR_HAVE_SYS_WAIT_H 0
! 167: #define APR_HAVE_TIME_H 1
! 168: #define APR_HAVE_UNISTD_H 0
! 169: #define APR_HAVE_STDDEF_H 1
! 170: #define APR_HAVE_PROCESS_H 1
! 171: #else
! 172: #define APR_HAVE_ARPA_INET_H 0
! 173: #define APR_HAVE_CONIO_H 0
! 174: #define APR_HAVE_CRYPT_H 0
! 175: #define APR_HAVE_CTYPE_H 0
! 176: #define APR_HAVE_DIRENT_H 0
! 177: #define APR_HAVE_ERRNO_H 0
! 178: #define APR_HAVE_FCNTL_H 0
! 179: #define APR_HAVE_IO_H 0
! 180: #define APR_HAVE_LIMITS_H 0
! 181: #define APR_HAVE_NETDB_H 0
! 182: #define APR_HAVE_NETINET_IN_H 0
! 183: #define APR_HAVE_NETINET_SCTP_H 0
! 184: #define APR_HAVE_NETINET_SCTP_UIO_H 0
! 185: #define APR_HAVE_NETINET_TCP_H 0
! 186: #define APR_HAVE_PTHREAD_H 0
! 187: #define APR_HAVE_SEMAPHORE_H 0
! 188: #define APR_HAVE_SIGNAL_H 0
! 189: #define APR_HAVE_STDARG_H 0
! 190: #define APR_HAVE_STDINT_H 0
! 191: #define APR_HAVE_STDIO_H 1
! 192: #define APR_HAVE_STDLIB_H 1
! 193: #define APR_HAVE_STRING_H 1
! 194: #define APR_HAVE_STRINGS_H 0
! 195: #define APR_HAVE_SYS_IOCTL_H 0
! 196: #define APR_HAVE_SYS_SENDFILE_H 0
! 197: #define APR_HAVE_SYS_SIGNAL_H 0
! 198: #define APR_HAVE_SYS_SOCKET_H 0
! 199: #define APR_HAVE_SYS_SOCKIO_H 0
! 200: #define APR_HAVE_SYS_SYSLIMITS_H 0
! 201: #define APR_HAVE_SYS_TIME_H 0
! 202: #define APR_HAVE_SYS_TYPES_H 0
! 203: #define APR_HAVE_SYS_UIO_H 0
! 204: #define APR_HAVE_SYS_UN_H 0
! 205: #define APR_HAVE_SYS_WAIT_H 0
! 206: #define APR_HAVE_TIME_H 0
! 207: #define APR_HAVE_UNISTD_H 0
! 208: #define APR_HAVE_STDDEF_H 0
! 209: #define APR_HAVE_PROCESS_H 0
! 210: #endif
! 211:
! 212: /** @} */
! 213: /** @} */
! 214:
! 215: /* We don't include our conditional headers within the doxyblocks
! 216: * or the extern "C" namespace
! 217: */
! 218:
! 219: #if APR_HAVE_STDLIB_H
! 220: #include <stdlib.h>
! 221: #endif
! 222: #if APR_HAVE_STDIO_H
! 223: #include <stdio.h>
! 224: #endif
! 225: #if APR_HAVE_SYS_TYPES_H
! 226: #include <sys/types.h>
! 227: #endif
! 228: #if APR_HAVE_STDDEF_H
! 229: #include <stddef.h>
! 230: #endif
! 231: #if APR_HAVE_TIME_H
! 232: #include <time.h>
! 233: #endif
! 234: #if APR_HAVE_PROCESS_H
! 235: #include <process.h>
! 236: #endif
! 237:
! 238: #ifdef __cplusplus
! 239: extern "C" {
! 240: #endif
! 241:
! 242: /**
! 243: * @addtogroup apr_platform
! 244: * @ingroup APR
! 245: * @{
! 246: */
! 247:
! 248: #define APR_HAVE_SHMEM_MMAP_TMP 0
! 249: #define APR_HAVE_SHMEM_MMAP_SHM 0
! 250: #define APR_HAVE_SHMEM_MMAP_ZERO 0
! 251: #define APR_HAVE_SHMEM_SHMGET_ANON 0
! 252: #define APR_HAVE_SHMEM_SHMGET 0
! 253: #define APR_HAVE_SHMEM_MMAP_ANON 0
! 254: #define APR_HAVE_SHMEM_BEOS 0
! 255:
! 256: #define APR_USE_SHMEM_MMAP_TMP 0
! 257: #define APR_USE_SHMEM_MMAP_SHM 0
! 258: #define APR_USE_SHMEM_MMAP_ZERO 0
! 259: #define APR_USE_SHMEM_SHMGET_ANON 0
! 260: #define APR_USE_SHMEM_SHMGET 0
! 261: #define APR_USE_SHMEM_MMAP_ANON 0
! 262: #define APR_USE_SHMEM_BEOS 0
! 263:
! 264: #define APR_USE_FLOCK_SERIALIZE 0
! 265: #define APR_USE_POSIXSEM_SERIALIZE 0
! 266: #define APR_USE_SYSVSEM_SERIALIZE 0
! 267: #define APR_USE_FCNTL_SERIALIZE 0
! 268: #define APR_USE_PROC_PTHREAD_SERIALIZE 0
! 269: #define APR_USE_PTHREAD_SERIALIZE 0
! 270:
! 271: #define APR_HAS_FLOCK_SERIALIZE 0
! 272: #define APR_HAS_SYSVSEM_SERIALIZE 0
! 273: #define APR_HAS_POSIXSEM_SERIALIZE 0
! 274: #define APR_HAS_FCNTL_SERIALIZE 0
! 275: #define APR_HAS_PROC_PTHREAD_SERIALIZE 0
! 276:
! 277: #define APR_PROCESS_LOCK_IS_GLOBAL 0
! 278:
! 279: #define APR_HAVE_CORKABLE_TCP 0
! 280: #define APR_HAVE_GETRLIMIT 0
! 281: #define APR_HAVE_ICONV 0
! 282: #define APR_HAVE_IN_ADDR 1
! 283: #define APR_HAVE_INET_ADDR 1
! 284: #define APR_HAVE_INET_NETWORK 0
! 285: #define APR_HAVE_IPV6 0
! 286: #define APR_HAVE_MEMMOVE 1
! 287: #define APR_HAVE_SETRLIMIT 0
! 288: #define APR_HAVE_SIGACTION 0
! 289: #define APR_HAVE_SIGSUSPEND 0
! 290: #define APR_HAVE_SIGWAIT 0
! 291: #define APR_HAVE_SA_STORAGE 0
! 292: #define APR_HAVE_STRCASECMP 0
! 293: #define APR_HAVE_STRDUP 1
! 294: #define APR_HAVE_STRNCASECMP 0
! 295: #define APR_HAVE_STRSTR 1
! 296: #define APR_HAVE_MEMCHR 1
! 297: #define APR_HAVE_STRUCT_RLIMIT 0
! 298: #define APR_HAVE_UNION_SEMUN 0
! 299: #define APR_HAVE_SCTP 0
! 300: #define APR_HAVE_IOVEC 0
! 301:
! 302: #ifndef _WIN32_WCE
! 303: #define APR_HAVE_STRICMP 1
! 304: #define APR_HAVE_STRNICMP 1
! 305: #else
! 306: #define APR_HAVE_STRICMP 0
! 307: #define APR_HAVE_STRNICMP 0
! 308: #endif
! 309:
! 310: /* APR Feature Macros */
! 311: #define APR_HAS_SHARED_MEMORY 1
! 312: #define APR_HAS_THREADS 1
! 313: #define APR_HAS_MMAP 1
! 314: #define APR_HAS_FORK 0
! 315: #define APR_HAS_RANDOM 1
! 316: #define APR_HAS_OTHER_CHILD 1
! 317: #define APR_HAS_DSO 1
! 318: #define APR_HAS_SO_ACCEPTFILTER 0
! 319: #define APR_HAS_UNICODE_FS 1
! 320: #define APR_HAS_PROC_INVOKED 1
! 321: #define APR_HAS_OS_UUID 1
! 322:
! 323: #ifndef _WIN32_WCE
! 324: #define APR_HAS_SENDFILE 1
! 325: #define APR_HAS_USER 1
! 326: #define APR_HAS_LARGE_FILES 1
! 327: #define APR_HAS_XTHREAD_FILES 1
! 328: #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 1
! 329: #else
! 330: #define APR_HAS_SENDFILE 0
! 331: #define APR_HAS_USER 0
! 332: #define APR_HAS_LARGE_FILES 0
! 333: #define APR_HAS_XTHREAD_FILES 0
! 334: #define APR_PROCATTR_USER_SET_REQUIRES_PASSWORD 0
! 335: #endif
! 336:
! 337: /* APR sets APR_FILES_AS_SOCKETS to 1 on systems where it is possible
! 338: * to poll on files/pipes.
! 339: */
! 340: #define APR_FILES_AS_SOCKETS 0
! 341:
! 342: /* This macro indicates whether or not EBCDIC is the native character set.
! 343: */
! 344: #define APR_CHARSET_EBCDIC 0
! 345:
! 346: /* If we have a TCP implementation that can be "corked", what flag
! 347: * do we use?
! 348: */
! 349: #define APR_TCP_NOPUSH_FLAG @apr_tcp_nopush_flag@
! 350:
! 351: /* Is the TCP_NODELAY socket option inherited from listening sockets?
! 352: */
! 353: #define APR_TCP_NODELAY_INHERITED 1
! 354:
! 355: /* Is the O_NONBLOCK flag inherited from listening sockets?
! 356: */
! 357: #define APR_O_NONBLOCK_INHERITED 1
! 358:
! 359: /* Typedefs that APR needs. */
! 360:
! 361: typedef unsigned char apr_byte_t;
! 362:
! 363: typedef short apr_int16_t;
! 364: typedef unsigned short apr_uint16_t;
! 365:
! 366: typedef int apr_int32_t;
! 367: typedef unsigned int apr_uint32_t;
! 368:
! 369: typedef __int64 apr_int64_t;
! 370: typedef unsigned __int64 apr_uint64_t;
! 371:
! 372: typedef size_t apr_size_t;
! 373: #if APR_HAVE_STDDEF_H
! 374: typedef ptrdiff_t apr_ssize_t;
! 375: #else
! 376: typedef int apr_ssize_t;
! 377: #endif
! 378: #if APR_HAS_LARGE_FILES
! 379: typedef __int64 apr_off_t;
! 380: #else
! 381: typedef int apr_off_t;
! 382: #endif
! 383: typedef int apr_socklen_t;
! 384: typedef apr_uint64_t apr_ino_t;
! 385:
! 386: #ifdef _WIN64
! 387: #define APR_SIZEOF_VOIDP 8
! 388: #else
! 389: #define APR_SIZEOF_VOIDP 4
! 390: #endif
! 391:
! 392: #if APR_SIZEOF_VOIDP == 8
! 393: typedef apr_uint64_t apr_uintptr_t;
! 394: #else
! 395: typedef apr_uint32_t apr_uintptr_t;
! 396: #endif
! 397:
! 398: /* Are we big endian? */
! 399: /* XXX: Fatal assumption on Alpha platforms */
! 400: #define APR_IS_BIGENDIAN 0
! 401:
! 402: /* Mechanisms to properly type numeric literals */
! 403:
! 404: #ifndef __GNUC__
! 405: #define APR_INT64_C(val) (val##i64)
! 406: #define APR_UINT64_C(val) (val##Ui64)
! 407: #else
! 408: #define APR_INT64_C(val) (val##LL)
! 409: #define APR_UINT64_C(val) (val##ULL)
! 410: #endif
! 411:
! 412: #ifdef INT16_MIN
! 413: #define APR_INT16_MIN INT16_MIN
! 414: #else
! 415: #define APR_INT16_MIN (-0x7fff - 1)
! 416: #endif
! 417:
! 418: #ifdef INT16_MAX
! 419: #define APR_INT16_MAX INT16_MAX
! 420: #else
! 421: #define APR_INT16_MAX (0x7fff)
! 422: #endif
! 423:
! 424: #ifdef UINT16_MAX
! 425: #define APR_UINT16_MAX UINT16_MAX
! 426: #else
! 427: #define APR_UINT16_MAX (0xffff)
! 428: #endif
! 429:
! 430: #ifdef INT32_MIN
! 431: #define APR_INT32_MIN INT32_MIN
! 432: #else
! 433: #define APR_INT32_MIN (-0x7fffffff - 1)
! 434: #endif
! 435:
! 436: #ifdef INT32_MAX
! 437: #define APR_INT32_MAX INT32_MAX
! 438: #else
! 439: #define APR_INT32_MAX 0x7fffffff
! 440: #endif
! 441:
! 442: #ifdef UINT32_MAX
! 443: #define APR_UINT32_MAX UINT32_MAX
! 444: #else
! 445: #define APR_UINT32_MAX (0xffffffffU)
! 446: #endif
! 447:
! 448: #ifdef INT64_MIN
! 449: #define APR_INT64_MIN INT64_MIN
! 450: #else
! 451: #define APR_INT64_MIN (APR_INT64_C(-0x7fffffffffffffff) - 1)
! 452: #endif
! 453:
! 454: #ifdef INT64_MAX
! 455: #define APR_INT64_MAX INT64_MAX
! 456: #else
! 457: #define APR_INT64_MAX APR_INT64_C(0x7fffffffffffffff)
! 458: #endif
! 459:
! 460: #ifdef UINT64_MAX
! 461: #define APR_UINT64_MAX UINT64_MAX
! 462: #else
! 463: #define APR_UINT64_MAX APR_UINT64_C(0xffffffffffffffff)
! 464: #endif
! 465:
! 466: #define APR_SIZE_MAX (~((apr_size_t)0))
! 467:
! 468: /* Definitions that APR programs need to work properly. */
! 469:
! 470: /**
! 471: * APR public API wrap for C++ compilers.
! 472: */
! 473: #ifdef __cplusplus
! 474: #define APR_BEGIN_DECLS extern "C" {
! 475: #define APR_END_DECLS }
! 476: #else
! 477: #define APR_BEGIN_DECLS
! 478: #define APR_END_DECLS
! 479: #endif
! 480:
! 481: /**
! 482: * Thread callbacks from APR functions must be declared with APR_THREAD_FUNC,
! 483: * so that they follow the platform's calling convention.
! 484: * <PRE>
! 485: *
! 486: * void* APR_THREAD_FUNC my_thread_entry_fn(apr_thread_t *thd, void *data);
! 487: *
! 488: * </PRE>
! 489: */
! 490: #define APR_THREAD_FUNC __stdcall
! 491:
! 492:
! 493: #if defined(DOXYGEN) || !defined(WIN32)
! 494:
! 495: /**
! 496: * The public APR functions are declared with APR_DECLARE(), so they may
! 497: * use the most appropriate calling convention. Public APR functions with
! 498: * variable arguments must use APR_DECLARE_NONSTD().
! 499: *
! 500: * @remark Both the declaration and implementations must use the same macro.
! 501: *
! 502: * <PRE>
! 503: * APR_DECLARE(rettype) apr_func(args)
! 504: * </PRE>
! 505: * @see APR_DECLARE_NONSTD @see APR_DECLARE_DATA
! 506: * @remark Note that when APR compiles the library itself, it passes the
! 507: * symbol -DAPR_DECLARE_EXPORT to the compiler on some platforms (e.g. Win32)
! 508: * to export public symbols from the dynamic library build.\n
! 509: * The user must define the APR_DECLARE_STATIC when compiling to target
! 510: * the static APR library on some platforms (e.g. Win32.) The public symbols
! 511: * are neither exported nor imported when APR_DECLARE_STATIC is defined.\n
! 512: * By default, compiling an application and including the APR public
! 513: * headers, without defining APR_DECLARE_STATIC, will prepare the code to be
! 514: * linked to the dynamic library.
! 515: */
! 516: #define APR_DECLARE(type) type
! 517:
! 518: /**
! 519: * The public APR functions using variable arguments are declared with
! 520: * APR_DECLARE_NONSTD(), as they must follow the C language calling convention.
! 521: * @see APR_DECLARE @see APR_DECLARE_DATA
! 522: * @remark Both the declaration and implementations must use the same macro.
! 523: * <PRE>
! 524: *
! 525: * APR_DECLARE_NONSTD(rettype) apr_func(args, ...);
! 526: *
! 527: * </PRE>
! 528: */
! 529: #define APR_DECLARE_NONSTD(type) type
! 530:
! 531: /**
! 532: * The public APR variables are declared with AP_MODULE_DECLARE_DATA.
! 533: * This assures the appropriate indirection is invoked at compile time.
! 534: * @see APR_DECLARE @see APR_DECLARE_NONSTD
! 535: * @remark Note that the declaration and implementations use different forms,
! 536: * but both must include the macro.
! 537: *
! 538: * <PRE>
! 539: *
! 540: * extern APR_DECLARE_DATA type apr_variable;\n
! 541: * APR_DECLARE_DATA type apr_variable = value;
! 542: *
! 543: * </PRE>
! 544: */
! 545: #define APR_DECLARE_DATA
! 546:
! 547: #elif defined(APR_DECLARE_STATIC)
! 548: #define APR_DECLARE(type) type __stdcall
! 549: #define APR_DECLARE_NONSTD(type) type __cdecl
! 550: #define APR_DECLARE_DATA
! 551: #elif defined(APR_DECLARE_EXPORT)
! 552: #define APR_DECLARE(type) __declspec(dllexport) type __stdcall
! 553: #define APR_DECLARE_NONSTD(type) __declspec(dllexport) type __cdecl
! 554: #define APR_DECLARE_DATA __declspec(dllexport)
! 555: #else
! 556: #define APR_DECLARE(type) __declspec(dllimport) type __stdcall
! 557: #define APR_DECLARE_NONSTD(type) __declspec(dllimport) type __cdecl
! 558: #define APR_DECLARE_DATA __declspec(dllimport)
! 559: #endif
! 560:
! 561: #ifdef _WIN64
! 562: #define APR_SSIZE_T_FMT "I64d"
! 563: #define APR_SIZE_T_FMT "I64u"
! 564: #else
! 565: #define APR_SSIZE_T_FMT "d"
! 566: #define APR_SIZE_T_FMT "u"
! 567: #endif
! 568:
! 569: #if APR_HAS_LARGE_FILES
! 570: #define APR_OFF_T_FMT "I64d"
! 571: #else
! 572: #define APR_OFF_T_FMT "d"
! 573: #endif
! 574:
! 575: #define APR_PID_T_FMT "d"
! 576:
! 577: #define APR_INT64_T_FMT "I64d"
! 578: #define APR_UINT64_T_FMT "I64u"
! 579: #define APR_UINT64_T_HEX_FMT "I64x"
! 580:
! 581: /* No difference between PROC and GLOBAL mutex */
! 582: #define APR_PROC_MUTEX_IS_GLOBAL 1
! 583:
! 584: /* Local machine definition for console and log output. */
! 585: #define APR_EOL_STR "\r\n"
! 586:
! 587: typedef int apr_wait_t;
! 588:
! 589: #if APR_HAS_UNICODE_FS
! 590: /* An arbitrary size that is digestable. True max is a bit less than 32000 */
! 591: #define APR_PATH_MAX 8192
! 592: #else /* !APR_HAS_UNICODE_FS */
! 593: #define APR_PATH_MAX MAX_PATH
! 594: #endif
! 595:
! 596: #define APR_DSOPATH "PATH"
! 597:
! 598: /** @} */
! 599:
! 600: /* Definitions that only Win32 programs need to compile properly. */
! 601:
! 602: /* XXX These simply don't belong here, perhaps in apr_portable.h
! 603: * based on some APR_HAVE_PID/GID/UID?
! 604: */
! 605: #ifndef __GNUC__
! 606: typedef int pid_t;
! 607: #endif
! 608: typedef int uid_t;
! 609: typedef int gid_t;
! 610:
! 611: /* Win32 .h ommissions we really need */
! 612: #define STDIN_FILENO 0
! 613: #define STDOUT_FILENO 1
! 614: #define STDERR_FILENO 2
! 615:
! 616: #if APR_HAVE_IPV6
! 617:
! 618: /* Appears in later flavors, not the originals. */
! 619: #ifndef in_addr6
! 620: #define in6_addr in_addr6
! 621: #endif
! 622:
! 623: #ifndef WS2TCPIP_INLINE
! 624: #define IN6_IS_ADDR_V4MAPPED(a) \
! 625: ( (*(const apr_uint64_t *)(const void *)(&(a)->s6_addr[0]) == 0) \
! 626: && (*(const apr_uint32_t *)(const void *)(&(a)->s6_addr[8]) == ntohl(0x0000ffff)))
! 627: #endif
! 628:
! 629: #endif /* APR_HAS_IPV6 */
! 630:
! 631: #ifdef __cplusplus
! 632: }
! 633: #endif
! 634:
! 635: /* Done with badly written headers
! 636: */
! 637: #if defined(_MSC_VER) && _MSC_VER >= 1200
! 638: #pragma warning(pop)
! 639: #pragma warning(disable: 4996)
! 640: #endif
! 641:
! 642: #endif /* WIN32 */
! 643:
! 644: #endif /* APR_H */
E-mail: