[4] | 1 | /************************************************************** ggt-head beg |
---|
| 2 | * |
---|
| 3 | * GGT: Generic Graphics Toolkit |
---|
| 4 | * |
---|
| 5 | * Original Authors: |
---|
| 6 | * Allen Bierbaum |
---|
| 7 | * |
---|
| 8 | * ----------------------------------------------------------------- |
---|
| 9 | * File: Version.h,v |
---|
| 10 | * Date modified: 2006/11/10 21:55:50 |
---|
| 11 | * Version: 1.38.2.1 |
---|
| 12 | * ----------------------------------------------------------------- |
---|
| 13 | * |
---|
| 14 | *********************************************************** ggt-head end */ |
---|
| 15 | /*************************************************************** ggt-cpr beg |
---|
| 16 | * |
---|
| 17 | * GGT: The Generic Graphics Toolkit |
---|
| 18 | * Copyright (C) 2001,2002 Allen Bierbaum |
---|
| 19 | * |
---|
| 20 | * This library is free software; you can redistribute it and/or |
---|
| 21 | * modify it under the terms of the GNU Lesser General Public |
---|
| 22 | * License as published by the Free Software Foundation; either |
---|
| 23 | * version 2.1 of the License, or (at your option) any later version. |
---|
| 24 | * |
---|
| 25 | * This library is distributed in the hope that it will be useful, |
---|
| 26 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
| 27 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
---|
| 28 | * Lesser General Public License for more details. |
---|
| 29 | * |
---|
| 30 | * You should have received a copy of the GNU Lesser General Public |
---|
| 31 | * License along with this library; if not, write to the Free Software |
---|
| 32 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
---|
| 33 | * |
---|
| 34 | ************************************************************ ggt-cpr end */ |
---|
| 35 | #ifndef _GMTL_VERSION_H_ |
---|
| 36 | #define _GMTL_VERSION_H_ |
---|
| 37 | |
---|
| 38 | /** |
---|
| 39 | * This file contains two useful items. |
---|
| 40 | * 1. The preprocessor friendly GMTL_VERSION "string". It is in the form |
---|
| 41 | * <major><minor><patch> where each part has exactly 3 digits. |
---|
| 42 | * 2. The C++ friendly variable, version, that contains the version as a |
---|
| 43 | * string. It is in the form of <major>.<minor>.<patch> where each part |
---|
| 44 | * has anywhere from 1 to 3 digits. |
---|
| 45 | */ |
---|
| 46 | |
---|
| 47 | /** |
---|
| 48 | * This is the "human-readable" GMTL version _string_. It is of the form |
---|
| 49 | * <major><minor><patch>. Each part has exactly 3 digits. |
---|
| 50 | */ |
---|
| 51 | // The major/minor/patch version (up to 3 digits each). |
---|
| 52 | #define GMTL_VERSION_MAJOR 0 |
---|
| 53 | #define GMTL_VERSION_MINOR 4 |
---|
| 54 | #define GMTL_VERSION_PATCH 12 |
---|
| 55 | |
---|
| 56 | //-------------------------------------------------------------------------- |
---|
| 57 | //-------------------------------------------------------------------------- |
---|
| 58 | // To update the version number, do not modify anything below this line!!!! |
---|
| 59 | //-------------------------------------------------------------------------- |
---|
| 60 | //-------------------------------------------------------------------------- |
---|
| 61 | |
---|
| 62 | |
---|
| 63 | //-------------------------------------------------------------------------- |
---|
| 64 | // Define the helper macros |
---|
| 65 | //-------------------------------------------------------------------------- |
---|
| 66 | |
---|
| 67 | // These helper macros are used build up the GMTL_VERSION macro |
---|
| 68 | #define GMTL_GLUE(a,b) a ## b |
---|
| 69 | #define GMTL_XGLUE(a,b) GMTL_GLUE(a,b) |
---|
| 70 | |
---|
| 71 | // These helper macros are used to stringify a given macro |
---|
| 72 | #define GMTL_STR(s) # s |
---|
| 73 | #define GMTL_XSTR(s) GMTL_STR(s) |
---|
| 74 | |
---|
| 75 | // These helper macros are used to build up the GMTL_VERSION_STRING macro. |
---|
| 76 | #define GMTL_DOT(a,b) a ## . ## b |
---|
| 77 | #define GMTL_XDOT(a,b) GMTL_DOT(a,b) |
---|
| 78 | |
---|
| 79 | // These helpr macros are used to facilitate a zero left fill |
---|
| 80 | #define GMTL_ZEROFILL(a) 0 ## a |
---|
| 81 | #define GMTL_XZEROFILL(a) GMTL_ZEROFILL(a) |
---|
| 82 | |
---|
| 83 | // Fix up the major version by doing a zero left fill |
---|
| 84 | #if GMTL_VERSION_MAJOR < 10 |
---|
| 85 | # define GMTL_VERSION_MAJOR_FILLED \ |
---|
| 86 | GMTL_XZEROFILL(GMTL_XZEROFILL(GMTL_VERSION_MAJOR)) |
---|
| 87 | #elif GMTL_VERSION_MAJOR < 100 |
---|
| 88 | # define GMTL_VERSION_MAJOR_FILLED GMTL_XZEROFILL(GMTL_VERSION_MAJOR) |
---|
| 89 | #else |
---|
| 90 | # define GMTL_VERSION_MAJOR_FILLED GMTL_VERSION_MAJOR |
---|
| 91 | #endif |
---|
| 92 | |
---|
| 93 | // Fix up the minor version by doing a zero left fill |
---|
| 94 | #if GMTL_VERSION_MINOR < 10 |
---|
| 95 | # define GMTL_VERSION_MINOR_FILLED \ |
---|
| 96 | GMTL_XZEROFILL(GMTL_XZEROFILL(GMTL_VERSION_MINOR)) |
---|
| 97 | #elif GMTL_VERSION_MINOR < 100 |
---|
| 98 | # define GMTL_VERSION_MINOR_FILLED GMTL_XZEROFILL(GMTL_VERSION_MINOR) |
---|
| 99 | #else |
---|
| 100 | # define GMTL_VERSION_MINOR_FILLED GMTL_VERSION_MINOR |
---|
| 101 | #endif |
---|
| 102 | |
---|
| 103 | // Fix up the patch version by doing a zero left fill |
---|
| 104 | #if GMTL_VERSION_PATCH < 10 |
---|
| 105 | # define GMTL_VERSION_PATCH_FILLED \ |
---|
| 106 | GMTL_XZEROFILL(GMTL_XZEROFILL(GMTL_VERSION_PATCH)) |
---|
| 107 | #elif GMTL_VERSION_PATCH < 100 |
---|
| 108 | # define GMTL_VERSION_PATCH_FILLED GMTL_XZEROFILL(GMTL_VERSION_PATCH) |
---|
| 109 | #else |
---|
| 110 | # define GMTL_VERSION_PATCH_FILLED GMTL_VERSION_PATCH |
---|
| 111 | #endif |
---|
| 112 | |
---|
| 113 | //-------------------------------------------------------------------------- |
---|
| 114 | // Define the GMTL_VERSION and GMTL_VERSION_STRING macros |
---|
| 115 | //-------------------------------------------------------------------------- |
---|
| 116 | |
---|
| 117 | // Build up the GMTL_VERSION macro by pasting the individual parts together |
---|
| 118 | /** |
---|
| 119 | * The is the preprocessor-friendly version string. It is in the form of |
---|
| 120 | * <major><minor><patch>. Each part has exactly 3 digits. |
---|
| 121 | */ |
---|
| 122 | #define GMTL_VERSION \ |
---|
| 123 | GMTL_XGLUE( \ |
---|
| 124 | GMTL_XGLUE(GMTL_VERSION_MAJOR_FILLED, GMTL_VERSION_MINOR_FILLED), \ |
---|
| 125 | GMTL_VERSION_PATCH_FILLED \ |
---|
| 126 | ) |
---|
| 127 | |
---|
| 128 | // Create the GMTL_VERSION_STRING macro |
---|
| 129 | #define GMTL_VERSION_STRING \ |
---|
| 130 | GMTL_XDOT( \ |
---|
| 131 | GMTL_XDOT(GMTL_VERSION_MAJOR, GMTL_VERSION_MINOR), \ |
---|
| 132 | GMTL_VERSION_PATCH \ |
---|
| 133 | ) |
---|
| 134 | |
---|
| 135 | //-------------------------------------------------------------------------- |
---|
| 136 | // Declare a version string constant that can be used at runtime. |
---|
| 137 | //-------------------------------------------------------------------------- |
---|
| 138 | namespace gmtl |
---|
| 139 | { |
---|
| 140 | inline const char* getVersion() |
---|
| 141 | { |
---|
| 142 | return GMTL_XSTR(GMTL_VERSION_STRING); |
---|
| 143 | } |
---|
| 144 | } // end namespace gmtl |
---|
| 145 | |
---|
| 146 | //-------------------------------------------------------------------------- |
---|
| 147 | // Cleanup after ourselves and undef all internal macros. |
---|
| 148 | //-------------------------------------------------------------------------- |
---|
| 149 | |
---|
| 150 | // Undef the all helper macros |
---|
| 151 | #undef GMTL_XGLUE |
---|
| 152 | #undef GMTL_GLUE |
---|
| 153 | #undef GMTL_XSTR |
---|
| 154 | #undef GMTL_STR |
---|
| 155 | #undef GMTL_ZEROFILL |
---|
| 156 | #undef GMTL_XZEROFILL |
---|
| 157 | #undef GMTL_XDOT |
---|
| 158 | #undef GMTL_DOT |
---|
| 159 | |
---|
| 160 | // Undef the GMTL_VERSION_STRING temporary macro |
---|
| 161 | #undef GMTL_VERSION_STRING |
---|
| 162 | |
---|
| 163 | // Undef the XXX_FILLED temporary macros |
---|
| 164 | #undef GMTL_VERSION_MAJOR_FILLED |
---|
| 165 | #undef GMTL_VERSION_MINOR_FILLED |
---|
| 166 | #undef GMTL_VERSION_PATCH_FILLED |
---|
| 167 | |
---|
| 168 | // Undef the macro for each version part |
---|
| 169 | #undef GMTL_VERSION_MAJOR |
---|
| 170 | #undef GMTL_VERSION_MINOR |
---|
| 171 | #undef GMTL_VERSION_PATCH |
---|
| 172 | |
---|
| 173 | #endif |
---|