summaryrefslogtreecommitdiffstats
path: root/util/include/axutil_version.h
blob: b66dd48f59668e072eeb90b378aead157b46f3f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/**
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef AXUTIL_VERSION_H
#define AXUTIL_VERSION_H

/* The numeric compile-time version constants. These constants are the
 * authoritative version numbers for AXIS2.
 */

/** major version
 * Major API changes that could cause compatibility problems for older
 * programs such as structure size changes.  No binary compatibility is
 * possible across a change in the major version.
 */
#define AXIS2_MAJOR_VERSION       1

/** minor version
 * Minor API changes that do not cause binary compatibility problems.
 * Reset to 0 when upgrading AXIS2_MAJOR_VERSION
 */
#define AXIS2_MINOR_VERSION       7

/** patch level
 * The Patch Level never includes API changes, simply bug fixes.
 * Reset to 0 when upgrading AXIS2_MINOR_VERSION
 */
#define AXIS2_PATCH_VERSION       0

/**
 * The symbol AXIS2_IS_DEV_VERSION is only defined for internal,
 * "development" copies of AXIS2.  It is undefined for released versions
 * of AXIS2.
 */
#undef AXIS2_IS_DEV_VERSION

#if defined(AXIS2_IS_DEV_VERSION) || defined(DOXYGEN)

/** Internal: string form of the "is dev" flag */
#define AXIS2_IS_DEV_STRING "-dev"
#else
#define AXIS2_IS_DEV_STRING ""
#endif

/** Properly quote a value as a string in the C preprocessor */
#define AXIS2_STRINGIFY(n) AXIS2_STRINGIFY_HELPER(n)

/** Helper macro for AXIS2_STRINGIFY */
#define AXIS2_STRINGIFY_HELPER(n) #n

/** The formatted string of AXIS2's version */
#define AXIS2_VERSION_STRING \
     AXIS2_STRINGIFY(AXIS2_MAJOR_VERSION) "." \
     AXIS2_STRINGIFY(AXIS2_MINOR_VERSION) "." \
     AXIS2_STRINGIFY(AXIS2_PATCH_VERSION) \
     AXIS2_IS_DEV_STRING

/** An alternative formatted string of AXIS2's version */

/* macro for Win32 .rc files using numeric csv representation */
#define AXIS2_VERSION_STRING_CSV AXIS2_MAJOR_VERSION ##, \
                             ##AXIS2_MINOR_VERSION ##, \
                             ##AXIS2_PATCH_VERSION

#ifndef AXIS2_VERSION_ONLY

/* The C language API to access the version at run time,
 * as opposed to compile time.  AXIS2_VERSION_ONLY may be defined
 * externally when preprocessing axutil_version.h to obtain strictly
 * the C Preprocessor macro declarations.
 */

#include "axutil_env.h"

#ifdef __cplusplus
extern "C"
{
#endif

    /**
     * The numeric version information is broken out into fields within this
     * structure.
     */
    typedef struct
    {

        int major;

        /**< major number */

        int minor;

        /**< minor number */

        int patch;

        /**< patch number */

        int is_dev;

        /**< is development (1 or 0) */
    }
    axis2_version_t;

    /**
     * Return AXIS2's version information information in a numeric form.
     *
     *  @param pvsn Pointer to a version structure for returning the version
     *              information.
     */
    AXIS2_EXTERN void AXIS2_CALL
    axis2_version(
        axis2_version_t * pvsn);

    /** Return AXIS2's version information as a string. */
    AXIS2_EXTERN const char *AXIS2_CALL
    axis2_version_string(
        void);

#ifdef __cplusplus
}
#endif
#endif

#endif                          /* AXIS2_VERSION_H */