Annotation of win32/apache22/srclib/apr/include/apr_version.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: #ifndef APR_VERSION_H
! 18: #define APR_VERSION_H
! 19:
! 20: /**
! 21: * @file apr_version.h
! 22: * @brief APR Versioning Interface
! 23: *
! 24: * APR's Version
! 25: *
! 26: * There are several different mechanisms for accessing the version. There
! 27: * is a string form, and a set of numbers; in addition, there are constants
! 28: * which can be compiled into your application, and you can query the library
! 29: * being used for its actual version.
! 30: *
! 31: * Note that it is possible for an application to detect that it has been
! 32: * compiled against a different version of APR by use of the compile-time
! 33: * constants and the use of the run-time query function.
! 34: *
! 35: * APR version numbering follows the guidelines specified in:
! 36: *
! 37: * http://apr.apache.org/versioning.html
! 38: */
! 39:
! 40:
! 41: #define APR_COPYRIGHT "Copyright (c) 2013 The Apache Software " \
! 42: "Foundation or its licensors, as applicable."
! 43:
! 44: /* The numeric compile-time version constants. These constants are the
! 45: * authoritative version numbers for APR.
! 46: */
! 47:
! 48: /** major version
! 49: * Major API changes that could cause compatibility problems for older
! 50: * programs such as structure size changes. No binary compatibility is
! 51: * possible across a change in the major version.
! 52: */
! 53: #define APR_MAJOR_VERSION 1
! 54:
! 55: /** minor version
! 56: * Minor API changes that do not cause binary compatibility problems.
! 57: * Reset to 0 when upgrading APR_MAJOR_VERSION
! 58: */
! 59: #define APR_MINOR_VERSION 4
! 60:
! 61: /** patch level
! 62: * The Patch Level never includes API changes, simply bug fixes.
! 63: * Reset to 0 when upgrading APR_MINOR_VERSION
! 64: */
! 65: #define APR_PATCH_VERSION 8
! 66:
! 67: /**
! 68: * The symbol APR_IS_DEV_VERSION is only defined for internal,
! 69: * "development" copies of APR. It is undefined for released versions
! 70: * of APR.
! 71: */
! 72: /* #define APR_IS_DEV_VERSION */
! 73:
! 74: /**
! 75: * Check at compile time if the APR version is at least a certain
! 76: * level.
! 77: * @param major The major version component of the version checked
! 78: * for (e.g., the "1" of "1.3.0").
! 79: * @param minor The minor version component of the version checked
! 80: * for (e.g., the "3" of "1.3.0").
! 81: * @param patch The patch level component of the version checked
! 82: * for (e.g., the "0" of "1.3.0").
! 83: * @remark This macro is available with APR versions starting with
! 84: * 1.3.0.
! 85: */
! 86: #define APR_VERSION_AT_LEAST(major,minor,patch) \
! 87: (((major) < APR_MAJOR_VERSION) \
! 88: || ((major) == APR_MAJOR_VERSION && (minor) < APR_MINOR_VERSION) \
! 89: || ((major) == APR_MAJOR_VERSION && (minor) == APR_MINOR_VERSION && (patch) <= APR_PATCH_VERSION))
! 90:
! 91: #if defined(APR_IS_DEV_VERSION) || defined(DOXYGEN)
! 92: /** Internal: string form of the "is dev" flag */
! 93: #ifndef APR_IS_DEV_STRING
! 94: #define APR_IS_DEV_STRING "-dev"
! 95: #endif
! 96: #else
! 97: #define APR_IS_DEV_STRING ""
! 98: #endif
! 99:
! 100: /* APR_STRINGIFY is defined here, and also in apr_general.h, so wrap it */
! 101: #ifndef APR_STRINGIFY
! 102: /** Properly quote a value as a string in the C preprocessor */
! 103: #define APR_STRINGIFY(n) APR_STRINGIFY_HELPER(n)
! 104: /** Helper macro for APR_STRINGIFY */
! 105: #define APR_STRINGIFY_HELPER(n) #n
! 106: #endif
! 107:
! 108: /** The formatted string of APR's version */
! 109: #define APR_VERSION_STRING \
! 110: APR_STRINGIFY(APR_MAJOR_VERSION) "." \
! 111: APR_STRINGIFY(APR_MINOR_VERSION) "." \
! 112: APR_STRINGIFY(APR_PATCH_VERSION) \
! 113: APR_IS_DEV_STRING
! 114:
! 115: /** An alternative formatted string of APR's version */
! 116: /* macro for Win32 .rc files using numeric csv representation */
! 117: #define APR_VERSION_STRING_CSV APR_MAJOR_VERSION ##, \
! 118: ##APR_MINOR_VERSION ##, \
! 119: ##APR_PATCH_VERSION
! 120:
! 121:
! 122: #ifndef APR_VERSION_ONLY
! 123:
! 124: /* The C language API to access the version at run time,
! 125: * as opposed to compile time. APR_VERSION_ONLY may be defined
! 126: * externally when preprocessing apr_version.h to obtain strictly
! 127: * the C Preprocessor macro declarations.
! 128: */
! 129:
! 130: #include "apr.h"
! 131:
! 132: #ifdef __cplusplus
! 133: extern "C" {
! 134: #endif
! 135:
! 136: /**
! 137: * The numeric version information is broken out into fields within this
! 138: * structure.
! 139: */
! 140: typedef struct {
! 141: int major; /**< major number */
! 142: int minor; /**< minor number */
! 143: int patch; /**< patch number */
! 144: int is_dev; /**< is development (1 or 0) */
! 145: } apr_version_t;
! 146:
! 147: /**
! 148: * Return APR's version information information in a numeric form.
! 149: *
! 150: * @param pvsn Pointer to a version structure for returning the version
! 151: * information.
! 152: */
! 153: APR_DECLARE(void) apr_version(apr_version_t *pvsn);
! 154:
! 155: /** Return APR's version information as a string. */
! 156: APR_DECLARE(const char *) apr_version_string(void);
! 157:
! 158: #ifdef __cplusplus
! 159: }
! 160: #endif
! 161:
! 162: #endif /* ndef APR_VERSION_ONLY */
! 163:
! 164: #endif /* ndef APR_VERSION_H */
E-mail: