apu_version.h revision 251876
19663SMark.Logan@Sun.COM/* Licensed to the Apache Software Foundation (ASF) under one or more
29663SMark.Logan@Sun.COM * contributor license agreements.  See the NOTICE file distributed with
39663SMark.Logan@Sun.COM * this work for additional information regarding copyright ownership.
49663SMark.Logan@Sun.COM * The ASF licenses this file to You under the Apache License, Version 2.0
59663SMark.Logan@Sun.COM * (the "License"); you may not use this file except in compliance with
69663SMark.Logan@Sun.COM * the License.  You may obtain a copy of the License at
79663SMark.Logan@Sun.COM *
89663SMark.Logan@Sun.COM *     http://www.apache.org/licenses/LICENSE-2.0
99663SMark.Logan@Sun.COM *
109663SMark.Logan@Sun.COM * Unless required by applicable law or agreed to in writing, software
119663SMark.Logan@Sun.COM * distributed under the License is distributed on an "AS IS" BASIS,
129663SMark.Logan@Sun.COM * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139663SMark.Logan@Sun.COM * See the License for the specific language governing permissions and
149663SMark.Logan@Sun.COM * limitations under the License.
159663SMark.Logan@Sun.COM */
169663SMark.Logan@Sun.COM
179663SMark.Logan@Sun.COM#ifndef APU_VERSION_H
189663SMark.Logan@Sun.COM#define APU_VERSION_H
199663SMark.Logan@Sun.COM
209663SMark.Logan@Sun.COM/**
219663SMark.Logan@Sun.COM * @file apu_version.h
229663SMark.Logan@Sun.COM * @brief APR-util Versioning Interface
239663SMark.Logan@Sun.COM *
249663SMark.Logan@Sun.COM * APR-util's Version
259663SMark.Logan@Sun.COM *
269663SMark.Logan@Sun.COM * There are several different mechanisms for accessing the version. There
279663SMark.Logan@Sun.COM * is a string form, and a set of numbers; in addition, there are constants
289663SMark.Logan@Sun.COM * which can be compiled into your application, and you can query the library
299663SMark.Logan@Sun.COM * being used for its actual version.
309663SMark.Logan@Sun.COM *
319663SMark.Logan@Sun.COM * Note that it is possible for an application to detect that it has been
329663SMark.Logan@Sun.COM * compiled against a different version of APU by use of the compile-time
339663SMark.Logan@Sun.COM * constants and the use of the run-time query function.
349663SMark.Logan@Sun.COM *
359663SMark.Logan@Sun.COM * APU version numbering follows the guidelines specified in:
369663SMark.Logan@Sun.COM *
379663SMark.Logan@Sun.COM *     http://apr.apache.org/versioning.html
389663SMark.Logan@Sun.COM */
399663SMark.Logan@Sun.COM
409663SMark.Logan@Sun.COM
419663SMark.Logan@Sun.COM/* The numeric compile-time version constants. These constants are the
429663SMark.Logan@Sun.COM * authoritative version numbers for APU.
439663SMark.Logan@Sun.COM */
449663SMark.Logan@Sun.COM
459663SMark.Logan@Sun.COM/** major version
469663SMark.Logan@Sun.COM * Major API changes that could cause compatibility problems for older
479663SMark.Logan@Sun.COM * programs such as structure size changes.  No binary compatibility is
489663SMark.Logan@Sun.COM * possible across a change in the major version.
499663SMark.Logan@Sun.COM */
509663SMark.Logan@Sun.COM#define APU_MAJOR_VERSION       1
519663SMark.Logan@Sun.COM
529663SMark.Logan@Sun.COM/** minor version
539663SMark.Logan@Sun.COM * Minor API changes that do not cause binary compatibility problems.
549663SMark.Logan@Sun.COM * Reset to 0 when upgrading APU_MAJOR_VERSION
559663SMark.Logan@Sun.COM */
569663SMark.Logan@Sun.COM#define APU_MINOR_VERSION       4
579663SMark.Logan@Sun.COM
589663SMark.Logan@Sun.COM/** patch level
599663SMark.Logan@Sun.COM * The Patch Level never includes API changes, simply bug fixes.
609663SMark.Logan@Sun.COM * Reset to 0 when upgrading APR_MINOR_VERSION
619663SMark.Logan@Sun.COM */
629663SMark.Logan@Sun.COM#define APU_PATCH_VERSION       1
639663SMark.Logan@Sun.COM
649663SMark.Logan@Sun.COM/**
659663SMark.Logan@Sun.COM * The symbol APU_IS_DEV_VERSION is only defined for internal,
669663SMark.Logan@Sun.COM * "development" copies of APU.  It is undefined for released versions
679663SMark.Logan@Sun.COM * of APU.
689663SMark.Logan@Sun.COM */
699663SMark.Logan@Sun.COM/* #define APU_IS_DEV_VERSION */
709663SMark.Logan@Sun.COM
719663SMark.Logan@Sun.COM
729663SMark.Logan@Sun.COM#if defined(APU_IS_DEV_VERSION) || defined(DOXYGEN)
739663SMark.Logan@Sun.COM/** Internal: string form of the "is dev" flag */
749663SMark.Logan@Sun.COM#define APU_IS_DEV_STRING "-dev"
759663SMark.Logan@Sun.COM#else
769663SMark.Logan@Sun.COM#define APU_IS_DEV_STRING ""
779663SMark.Logan@Sun.COM#endif
789663SMark.Logan@Sun.COM
799663SMark.Logan@Sun.COM
809663SMark.Logan@Sun.COM#ifndef APU_STRINGIFY
819663SMark.Logan@Sun.COM/** Properly quote a value as a string in the C preprocessor */
829663SMark.Logan@Sun.COM#define APU_STRINGIFY(n) APU_STRINGIFY_HELPER(n)
839663SMark.Logan@Sun.COM/** Helper macro for APU_STRINGIFY */
849663SMark.Logan@Sun.COM#define APU_STRINGIFY_HELPER(n) #n
859663SMark.Logan@Sun.COM#endif
869663SMark.Logan@Sun.COM
879663SMark.Logan@Sun.COM/** The formatted string of APU's version */
889663SMark.Logan@Sun.COM#define APU_VERSION_STRING \
899663SMark.Logan@Sun.COM     APU_STRINGIFY(APU_MAJOR_VERSION) "." \
909663SMark.Logan@Sun.COM     APU_STRINGIFY(APU_MINOR_VERSION) "." \
919663SMark.Logan@Sun.COM     APU_STRINGIFY(APU_PATCH_VERSION) \
929663SMark.Logan@Sun.COM     APU_IS_DEV_STRING
939663SMark.Logan@Sun.COM
949663SMark.Logan@Sun.COM/** An alternative formatted string of APR's version */
959663SMark.Logan@Sun.COM/* macro for Win32 .rc files using numeric csv representation */
969663SMark.Logan@Sun.COM#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION ##, \
979663SMark.Logan@Sun.COM                             ##APU_MINOR_VERSION ##, \
989663SMark.Logan@Sun.COM                             ##APU_PATCH_VERSION
999663SMark.Logan@Sun.COM
1009663SMark.Logan@Sun.COM
1019663SMark.Logan@Sun.COM#ifndef APU_VERSION_ONLY
1029663SMark.Logan@Sun.COM
1039663SMark.Logan@Sun.COM/* The C language API to access the version at run time,
1049663SMark.Logan@Sun.COM * as opposed to compile time.  APU_VERSION_ONLY may be defined
1059663SMark.Logan@Sun.COM * externally when preprocessing apr_version.h to obtain strictly
1069663SMark.Logan@Sun.COM * the C Preprocessor macro declarations.
1079663SMark.Logan@Sun.COM */
1089663SMark.Logan@Sun.COM
1099663SMark.Logan@Sun.COM#include "apr_version.h"
1109663SMark.Logan@Sun.COM
1119663SMark.Logan@Sun.COM#include "apu.h"
1129663SMark.Logan@Sun.COM
1139663SMark.Logan@Sun.COM#ifdef __cplusplus
1149663SMark.Logan@Sun.COMextern "C" {
1159663SMark.Logan@Sun.COM#endif
1169663SMark.Logan@Sun.COM
1179663SMark.Logan@Sun.COM/**
1189663SMark.Logan@Sun.COM * Return APR-util's version information information in a numeric form.
1199663SMark.Logan@Sun.COM *
1209663SMark.Logan@Sun.COM *  @param pvsn Pointer to a version structure for returning the version
1219663SMark.Logan@Sun.COM *              information.
1229663SMark.Logan@Sun.COM */
1239663SMark.Logan@Sun.COMAPU_DECLARE(void) apu_version(apr_version_t *pvsn);
1249663SMark.Logan@Sun.COM
1259663SMark.Logan@Sun.COM/** Return APU's version information as a string. */
1269663SMark.Logan@Sun.COMAPU_DECLARE(const char *) apu_version_string(void);
1279663SMark.Logan@Sun.COM
1289663SMark.Logan@Sun.COM#ifdef __cplusplus
1299663SMark.Logan@Sun.COM}
1309663SMark.Logan@Sun.COM#endif
1319663SMark.Logan@Sun.COM
1329663SMark.Logan@Sun.COM#endif /* ndef APU_VERSION_ONLY */
1339663SMark.Logan@Sun.COM
1349663SMark.Logan@Sun.COM#endif /* ndef APU_VERSION_H */
1359663SMark.Logan@Sun.COM