1251876Speter/* Licensed to the Apache Software Foundation (ASF) under one or more
2251876Speter * contributor license agreements.  See the NOTICE file distributed with
3251876Speter * this work for additional information regarding copyright ownership.
4251876Speter * The ASF licenses this file to You under the Apache License, Version 2.0
5251876Speter * (the "License"); you may not use this file except in compliance with
6251876Speter * the License.  You may obtain a copy of the License at
7251876Speter *
8251876Speter *     http://www.apache.org/licenses/LICENSE-2.0
9251876Speter *
10251876Speter * Unless required by applicable law or agreed to in writing, software
11251876Speter * distributed under the License is distributed on an "AS IS" BASIS,
12251876Speter * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13251876Speter * See the License for the specific language governing permissions and
14251876Speter * limitations under the License.
15251876Speter */
16251876Speter
17251876Speter#ifndef APU_VERSION_H
18251876Speter#define APU_VERSION_H
19251876Speter
20251876Speter/**
21251876Speter * @file apu_version.h
22251876Speter * @brief APR-util Versioning Interface
23251876Speter *
24251876Speter * APR-util's Version
25251876Speter *
26251876Speter * There are several different mechanisms for accessing the version. There
27251876Speter * is a string form, and a set of numbers; in addition, there are constants
28251876Speter * which can be compiled into your application, and you can query the library
29251876Speter * being used for its actual version.
30251876Speter *
31251876Speter * Note that it is possible for an application to detect that it has been
32251876Speter * compiled against a different version of APU by use of the compile-time
33251876Speter * constants and the use of the run-time query function.
34251876Speter *
35251876Speter * APU version numbering follows the guidelines specified in:
36251876Speter *
37251876Speter *     http://apr.apache.org/versioning.html
38251876Speter */
39251876Speter
40251876Speter
41262253Speter#define APU_COPYRIGHT "Copyright (c) 2013 The Apache Software " \
42262253Speter                      "Foundation or its licensors, as applicable."
43262253Speter
44251876Speter/* The numeric compile-time version constants. These constants are the
45251876Speter * authoritative version numbers for APU.
46251876Speter */
47251876Speter
48251876Speter/** major version
49251876Speter * Major API changes that could cause compatibility problems for older
50251876Speter * programs such as structure size changes.  No binary compatibility is
51251876Speter * possible across a change in the major version.
52251876Speter */
53251876Speter#define APU_MAJOR_VERSION       1
54251876Speter
55251876Speter/** minor version
56251876Speter * Minor API changes that do not cause binary compatibility problems.
57251876Speter * Reset to 0 when upgrading APU_MAJOR_VERSION
58251876Speter */
59253734Speter#define APU_MINOR_VERSION       5
60251876Speter
61251876Speter/** patch level
62251876Speter * The Patch Level never includes API changes, simply bug fixes.
63251876Speter * Reset to 0 when upgrading APR_MINOR_VERSION
64251876Speter */
65262253Speter#define APU_PATCH_VERSION       3
66251876Speter
67251876Speter/**
68251876Speter * The symbol APU_IS_DEV_VERSION is only defined for internal,
69251876Speter * "development" copies of APU.  It is undefined for released versions
70251876Speter * of APU.
71251876Speter */
72251876Speter/* #define APU_IS_DEV_VERSION */
73251876Speter
74251876Speter
75251876Speter#if defined(APU_IS_DEV_VERSION) || defined(DOXYGEN)
76251876Speter/** Internal: string form of the "is dev" flag */
77262253Speter#ifndef APU_IS_DEV_STRING
78251876Speter#define APU_IS_DEV_STRING "-dev"
79262253Speter#endif
80251876Speter#else
81251876Speter#define APU_IS_DEV_STRING ""
82251876Speter#endif
83251876Speter
84251876Speter
85251876Speter#ifndef APU_STRINGIFY
86251876Speter/** Properly quote a value as a string in the C preprocessor */
87251876Speter#define APU_STRINGIFY(n) APU_STRINGIFY_HELPER(n)
88251876Speter/** Helper macro for APU_STRINGIFY */
89251876Speter#define APU_STRINGIFY_HELPER(n) #n
90251876Speter#endif
91251876Speter
92251876Speter/** The formatted string of APU's version */
93251876Speter#define APU_VERSION_STRING \
94251876Speter     APU_STRINGIFY(APU_MAJOR_VERSION) "." \
95251876Speter     APU_STRINGIFY(APU_MINOR_VERSION) "." \
96251876Speter     APU_STRINGIFY(APU_PATCH_VERSION) \
97251876Speter     APU_IS_DEV_STRING
98251876Speter
99251876Speter/** An alternative formatted string of APR's version */
100251876Speter/* macro for Win32 .rc files using numeric csv representation */
101251876Speter#define APU_VERSION_STRING_CSV APU_MAJOR_VERSION ##, \
102251876Speter                             ##APU_MINOR_VERSION ##, \
103251876Speter                             ##APU_PATCH_VERSION
104251876Speter
105251876Speter
106251876Speter#ifndef APU_VERSION_ONLY
107251876Speter
108251876Speter/* The C language API to access the version at run time,
109251876Speter * as opposed to compile time.  APU_VERSION_ONLY may be defined
110251876Speter * externally when preprocessing apr_version.h to obtain strictly
111251876Speter * the C Preprocessor macro declarations.
112251876Speter */
113251876Speter
114251876Speter#include "apr_version.h"
115251876Speter
116251876Speter#include "apu.h"
117251876Speter
118251876Speter#ifdef __cplusplus
119251876Speterextern "C" {
120251876Speter#endif
121251876Speter
122251876Speter/**
123251876Speter * Return APR-util's version information information in a numeric form.
124251876Speter *
125251876Speter *  @param pvsn Pointer to a version structure for returning the version
126251876Speter *              information.
127251876Speter */
128251876SpeterAPU_DECLARE(void) apu_version(apr_version_t *pvsn);
129251876Speter
130251876Speter/** Return APU's version information as a string. */
131251876SpeterAPU_DECLARE(const char *) apu_version_string(void);
132251876Speter
133251876Speter#ifdef __cplusplus
134251876Speter}
135251876Speter#endif
136251876Speter
137251876Speter#endif /* ndef APU_VERSION_ONLY */
138251876Speter
139251876Speter#endif /* ndef APU_VERSION_H */
140