Main Page   Modules   Data Structures   File List   Data Fields  

svn_version.h

00001 /**
00002  * @copyright
00003  * ====================================================================
00004  * Copyright (c) 2000-2004 CollabNet.  All rights reserved.
00005  *
00006  * This software is licensed as described in the file COPYING, which
00007  * you should have received as part of this distribution.  The terms
00008  * are also available at http://subversion.tigris.org/license-1.html.
00009  * If newer versions of this license are posted there, you may use a
00010  * newer version instead, at your option.
00011  *
00012  * This software consists of voluntary contributions made by many
00013  * individuals.  For exact contribution history, see the revision
00014  * history and logs, available at http://subversion.tigris.org/.
00015  * ====================================================================
00016  * @endcopyright
00017  *
00018  * @file svn_version.h
00019  * @brief Version information.
00020  */
00021 
00022 #ifndef SVN_VERSION_H
00023 #define SVN_VERSION_H
00024 
00025 /* Hack to prevent the resource compiler from including
00026    apr_general.h.  It doesn't resolve the include paths
00027    correctly and blows up without this.
00028  */
00029 #ifndef APR_STRINGIFY
00030 #include <apr_general.h>
00031 #endif
00032 
00033 #include "svn_types.h"
00034 
00035 #ifdef __cplusplus
00036 extern "C" {
00037 #endif /* __cplusplus */
00038 
00039 
00040 /* Symbols that define the version number. */
00041 
00042 /* Version numbers: <major>.<minor>.<micro>
00043  *
00044  * The version numbers in this file follow the rules established by:
00045  *
00046  *   http://apr.apache.org/versioning.html
00047  */
00048 
00049 /** Major version number.
00050  *
00051  * Modify when incompatible changes are made to published interfaces.
00052  */
00053 #define SVN_VER_MAJOR      1
00054 
00055 /** Minor version number.
00056  *
00057  * Modify when new functionality is added or new interfaces are
00058  * defined, but all changes are backward compatible.
00059  */
00060 #define SVN_VER_MINOR      1
00061 
00062 /** Patch number.
00063  *
00064  * @since New in 1.1.
00065  *
00066  * Modify for every released patch.
00067  */
00068 #define SVN_VER_PATCH      4
00069 
00070 
00071 /** @deprecated Provided for backward compatibility with the 1.0 API. */
00072 #define SVN_VER_MICRO      SVN_VER_PATCH
00073 
00074 /** @deprecated Provided for backward compatibility with the 1.0 API. */
00075 #define SVN_VER_LIBRARY    SVN_VER_MAJOR
00076 
00077 
00078 /** Version tag: a string describing the version.
00079  *
00080  * This tag remains " (dev build)" in the repository so that we can
00081  * always see from "svn --version" that the software has been built
00082  * from the repository rather than a "blessed" distribution.
00083  *
00084  * When rolling a tarball, we automatically replace this text with " (r1234)"
00085  * (where 1234 is the last revision on the branch prior to the release) 
00086  * for final releases; in prereleases, it becomes " (Alpha)",
00087  * " (Beta 1)", etc., as appropriate.
00088  *
00089  * Always change this at the same time as SVN_VER_NUMTAG.
00090  */
00091 #define SVN_VER_TAG        " (r13838)"
00092 
00093 
00094 /** Number tag: a string describing the version.
00095  *
00096  * This tag is used to generate a version number string to identify
00097  * the client and server in HTTP requests, for example. It must not
00098  * contain any spaces. This value remains "-dev" in the repository.
00099  *
00100  * When rolling a tarball, we automatically replace this text with ""
00101  * for final releases; in prereleases, it becomes "-alpha", "-beta1",
00102  * etc., as appropriate.
00103  *
00104  * Always change this at the same time as SVN_VER_TAG.
00105  */
00106 #define SVN_VER_NUMTAG     ""
00107 
00108 
00109 /** Revision number: The repository revision number of this release.
00110  *
00111  * This constant is used to generate the build number part of the Windows
00112  * file version. Its value remains 0 in the repository.
00113  *
00114  * When rolling a tarball, we automatically replace it with what we
00115  * guess to be the correct revision number.
00116  */
00117 #define SVN_VER_REVISION   0
00118 
00119 
00120 /* Version strings composed from the above definitions. */
00121 
00122 /** Version number */
00123 #define SVN_VER_NUM        APR_STRINGIFY(SVN_VER_MAJOR) \
00124                            "." APR_STRINGIFY(SVN_VER_MINOR) \
00125                            "." APR_STRINGIFY(SVN_VER_PATCH)
00126 
00127 /** Version number with tag (contains no whitespace) */
00128 #define SVN_VER_NUMBER     SVN_VER_NUM SVN_VER_NUMTAG
00129 
00130 /** Complete version string */
00131 #define SVN_VERSION        SVN_VER_NUM SVN_VER_TAG
00132 
00133 
00134 
00135 /* Version queries and compatibility checks */
00136 
00137 /**
00138  * Version information. Each library contains a function called
00139  * svn_<i>libname</i>_version() that returns a pointer to a statically
00140  * allocated object of this type.
00141  *
00142  * @since New in 1.1.
00143  */
00144 typedef struct svn_version_t
00145 {
00146   int major;                    /**< Major version number */
00147   int minor;                    /**< Minor version number */
00148   int patch;                    /**< Patch number */
00149 
00150   /**
00151    * The verison tag (#SVN_VER_NUMTAG).\ Must always point to a
00152    * statically allocated string.
00153    */
00154   const char *tag;
00155 } svn_version_t;
00156 
00157 /**
00158  * Define a static svn_version_t object.
00159  * @since New in 1.1.
00160  */
00161 #define SVN_VERSION_DEFINE(name) \
00162   static const svn_version_t name = \
00163     { \
00164       SVN_VER_MAJOR, \
00165       SVN_VER_MINOR, \
00166       SVN_VER_PATCH, \
00167       SVN_VER_NUMTAG \
00168     } \
00169 
00170 /**
00171  * Generate the implementation of a version query function.
00172  * @since New in 1.1.
00173  */
00174 #define SVN_VERSION_BODY \
00175   SVN_VERSION_DEFINE (versioninfo); \
00176   return &versioninfo
00177 
00178 /**
00179  * Check library version compatibility. Returns #TRUE if the clent's
00180  * version, given in @a my_version, is compatible with the library
00181  * version, provided in @a lib_version.
00182  *
00183  * This function checks for version compatibility as per our
00184  * guarantees, but requires an exact match when linking to an
00185  * unreleased library. A development client is always compatible with
00186  * a previous released library.
00187  *
00188  * @since New in 1.1.
00189  */
00190 svn_boolean_t svn_ver_compatible (const svn_version_t *my_version,
00191                                   const svn_version_t *lib_version);
00192 
00193 
00194 /**
00195  * An entry in the compatibility checklist.
00196  * @see svn_ver_check_list()
00197  * @since New in 1.1.
00198  */
00199 typedef struct svn_version_checklist_t
00200 {
00201   const char *label;            /**< Entry label */
00202 
00203   /** Version query function for this entry */
00204   const svn_version_t *(*version_query) (void);
00205 } svn_version_checklist_t;
00206 
00207 
00208 /**
00209  * Perform a series of version compatibility checks. Checks if @a
00210  * my_version is compatible with each entry in @a checklist. @a
00211  * checklist must end with an entry whose label is @c NULL.
00212  *
00213  * @see svn_ver_compatible()
00214  * @since New in 1.1.
00215  */
00216 svn_error_t *svn_ver_check_list (const svn_version_t *my_version,
00217                                  const svn_version_checklist_t *checklist);
00218 
00219 
00220 /* libsvn_subr doesn't have an svn_subr header, so put the prototype here. */
00221 /**
00222  * Get libsvn_subr version information.
00223  * @since New in version 1.1.
00224  */
00225 const svn_version_t *svn_subr_version (void);
00226 
00227 
00228 #ifdef __cplusplus
00229 }
00230 #endif /* __cplusplus */
00231 
00232 #endif /* SVN_VERSION_H */

Generated on Sat Apr 2 00:45:59 2005 for Subversion by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002