summaryrefslogtreecommitdiff
path: root/libpeas/peas-version.h.in
diff options
context:
space:
mode:
authorChristian Hergert <chergert@redhat.com>2019-08-05 18:12:27 -0700
committerChristian Hergert <chergert@redhat.com>2019-08-05 19:17:18 -0700
commit7ad862c039ad5861ab270ac14ee59f664d7e1c32 (patch)
tree69e5b8c84bb45021e14bc6b6a9b96376d45b3845 /libpeas/peas-version.h.in
parent58d4718139f0e64915ee4eadb1fafb7c2603def8 (diff)
downloadlibpeas-7ad862c039ad5861ab270ac14ee59f664d7e1c32.tar.gz
version: add version macros and use them for public API
This adds the necessary bits to specify what is public ABI and what version it has been added. A followup commit will alter things so that we limit what symbols are visibile.
Diffstat (limited to 'libpeas/peas-version.h.in')
-rw-r--r--libpeas/peas-version.h.in93
1 files changed, 93 insertions, 0 deletions
diff --git a/libpeas/peas-version.h.in b/libpeas/peas-version.h.in
new file mode 100644
index 0000000..854b60a
--- /dev/null
+++ b/libpeas/peas-version.h.in
@@ -0,0 +1,93 @@
+/*
+ * peas-version.h
+ * This file is part of libpeas
+ *
+ * libpeas is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * libpeas is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef __PEAS_VERSION_H__
+#define __PEAS_VERSION_H__
+
+/**
+ * SECTION:peas-version
+ * @short_description: Peas version checking
+ *
+ * Peas provides macros to check the version of the library at compile-time
+ */
+
+/**
+ * PEAS_MAJOR_VERSION:
+ *
+ * Peas major version component (e.g. 1 if %PEAS_VERSION is 1.2.3)
+ */
+#define PEAS_MAJOR_VERSION (@PEAS_MAJOR_VERSION@)
+
+/**
+ * PEAS_MINOR_VERSION:
+ *
+ * Peas minor version component (e.g. 2 if %PEAS_VERSION is 1.2.3)
+ */
+#define PEAS_MINOR_VERSION (@PEAS_MINOR_VERSION@)
+
+/**
+ * PEAS_MICRO_VERSION:
+ *
+ * Peas micro version component (e.g. 3 if %PEAS_VERSION is 1.2.3)
+ */
+#define PEAS_MICRO_VERSION (@PEAS_MICRO_VERSION@)
+
+/**
+ * PEAS_VERSION
+ *
+ * Peas version.
+ */
+#define PEAS_VERSION (@PEAS_VERSION@)
+
+/**
+ * PEAS_VERSION_S:
+ *
+ * Peas version, encoded as a string, useful for printing and
+ * concatenation.
+ */
+#define PEAS_VERSION_S "@PEAS_VERSION@"
+
+#define PEAS_ENCODE_VERSION(major,minor,micro) \
+ ((major) << 24 | (minor) << 16 | (micro) << 8)
+
+/**
+ * PEAS_VERSION_HEX:
+ *
+ * Peas version, encoded as an hexadecimal number, useful for
+ * integer comparisons.
+ */
+#define PEAS_VERSION_HEX \
+ (PEAS_ENCODE_VERSION (PEAS_MAJOR_VERSION, PEAS_MINOR_VERSION, PEAS_MICRO_VERSION))
+
+/**
+ * PEAS_CHECK_VERSION:
+ * @major: required major version
+ * @minor: required minor version
+ * @micro: required micro version
+ *
+ * Compile-time version checking. Evaluates to %TRUE if the version
+ * of peas is greater than the required one.
+ */
+#define PEAS_CHECK_VERSION(major,minor,micro) \
+ (PEAS_MAJOR_VERSION > (major) || \
+ (PEAS_MAJOR_VERSION == (major) && PEAS_MINOR_VERSION > (minor)) || \
+ (PEAS_MAJOR_VERSION == (major) && PEAS_MINOR_VERSION == (minor) && \
+ PEAS_MICRO_VERSION >= (micro)))
+
+#endif /* __PEAS_VERSION_H__ */