[libsoup] Automatically generate soup-version.h macros



commit d1fea9a31f38899e16c0aef0f129d9b21a0473ed
Author: Patrick Griffis <pgriffis igalia com>
Date:   Fri Oct 30 14:58:35 2020 -0500

    Automatically generate soup-version.h macros

 libsoup/generate-version-header.py |  68 ++++++++
 libsoup/meson.build                |   6 +-
 libsoup/soup-version.h.in          | 337 +------------------------------------
 3 files changed, 77 insertions(+), 334 deletions(-)
---
diff --git a/libsoup/generate-version-header.py b/libsoup/generate-version-header.py
new file mode 100755
index 00000000..486a9e9b
--- /dev/null
+++ b/libsoup/generate-version-header.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+
+import sys
+
+input_file = sys.argv[1]
+output_file = sys.argv[2]
+current_version = sys.argv[3]
+major, minor, micro = (int(v) for v in current_version.split('.'))
+
+def is_stable(version):
+    return not version % 2
+
+with open(input_file) as i:
+    template = i.read()
+
+versions = []
+for i in range(24, 73):
+    if is_stable(i):
+        versions.append((2, i))
+
+if major == 2:
+    # Specific to 3.x dev releases
+    versions.append((3, 0))
+else:
+    minor_max = minor if minor != 0 and is_stable(minor) else minor + 1
+    for i in range(0, minor_max):
+        if is_stable(i):
+            versions.append((3, i))
+
+version_macros = ''
+version_attributes = ''
+
+for version in versions:
+    version_macros += '''/**
+ * SOUP_VERSION_{major_version}_{minor_version}:
+ *
+ * A macro that evaluates to the {major_version}.{minor_version} version of libsoup, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: {major_version}.{minor_version}
+ */
+#define SOUP_VERSION_{major_version}_{minor_version} (G_ENCODE_VERSION ({major_version}, {minor_version}))
+
+'''.format(major_version=version[0], minor_version=version[1])
+
+    version_attributes += '''#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_{major_version}_{minor_version}
+# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}                G_DEPRECATED
+# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}_FOR(f)         G_DEPRECATED_FOR(f)
+#else
+# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}
+# define SOUP_DEPRECATED_IN_{major_version}_{minor_version}_FOR(f)
+#endif
+
+#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_{major_version}_{minor_version}
+# define SOUP_AVAILABLE_IN_{major_version}_{minor_version}                 G_UNAVAILABLE({major_version}, 
{minor_version}) _SOUP_EXTERN
+#else
+# define SOUP_AVAILABLE_IN_{major_version}_{minor_version}                 _SOUP_EXTERN
+#endif
+'''.format(major_version=version[0], minor_version=version[1])
+
+header = template.format(version_macros=version_macros,
+                         version_attributes=version_attributes,
+                         major_version=major,
+                         minor_version=minor,
+                         micro_version=micro)
+
+with open(output_file, 'w+') as o:
+    o.write(header)
diff --git a/libsoup/meson.build b/libsoup/meson.build
index e9756508..6b37f4c8 100644
--- a/libsoup/meson.build
+++ b/libsoup/meson.build
@@ -150,10 +150,12 @@ version_cdata.set('SOUP_MAJOR_VERSION', soup_version_major)
 version_cdata.set('SOUP_MINOR_VERSION', soup_version_minor)
 version_cdata.set('SOUP_MICRO_VERSION', soup_version_micro)
 
-soup_version_h = configure_file(input : 'soup-version.h.in',
+soup_version_h = configure_file(
+  input : 'soup-version.h.in',
   output : 'soup-version.h',
   install_dir : join_paths(get_option('includedir'), includedir),
-  configuration : version_cdata)
+  command : [find_program('generate-version-header.py'), '@INPUT@', '@OUTPUT@', meson.project_version()]
+)
 
 enum_types = 'soup-enum-types'
 soup_enums = gnome.mkenums('soup-enum-types',
diff --git a/libsoup/soup-version.h.in b/libsoup/soup-version.h.in
index 308c2f27..10b5330d 100644
--- a/libsoup/soup-version.h.in
+++ b/libsoup/soup-version.h.in
@@ -11,9 +11,9 @@
 
 G_BEGIN_DECLS
 
-#define SOUP_MAJOR_VERSION (@SOUP_MAJOR_VERSION@)
-#define SOUP_MINOR_VERSION (@SOUP_MINOR_VERSION@)
-#define SOUP_MICRO_VERSION (@SOUP_MICRO_VERSION@)
+#define SOUP_MAJOR_VERSION ({major_version})
+#define SOUP_MINOR_VERSION ({minor_version})
+#define SOUP_MICRO_VERSION ({micro_version})
 
 #define SOUP_CHECK_VERSION(major, minor, micro) \
     (SOUP_MAJOR_VERSION > (major) || \
@@ -45,30 +45,7 @@ G_BEGIN_DECLS
 #endif /* SOUP_VAR */
 
 /* Deprecation / Availability macros */
-
-#define SOUP_VERSION_2_24 (G_ENCODE_VERSION (2, 24))
-#define SOUP_VERSION_2_26 (G_ENCODE_VERSION (2, 26))
-#define SOUP_VERSION_2_28 (G_ENCODE_VERSION (2, 28))
-#define SOUP_VERSION_2_30 (G_ENCODE_VERSION (2, 30))
-#define SOUP_VERSION_2_32 (G_ENCODE_VERSION (2, 32))
-#define SOUP_VERSION_2_34 (G_ENCODE_VERSION (2, 34))
-#define SOUP_VERSION_2_36 (G_ENCODE_VERSION (2, 36))
-#define SOUP_VERSION_2_38 (G_ENCODE_VERSION (2, 38))
-#define SOUP_VERSION_2_40 (G_ENCODE_VERSION (2, 40))
-#define SOUP_VERSION_2_42 (G_ENCODE_VERSION (2, 42))
-#define SOUP_VERSION_2_44 (G_ENCODE_VERSION (2, 44))
-#define SOUP_VERSION_2_46 (G_ENCODE_VERSION (2, 46))
-#define SOUP_VERSION_2_48 (G_ENCODE_VERSION (2, 48))
-#define SOUP_VERSION_2_50 (G_ENCODE_VERSION (2, 50))
-#define SOUP_VERSION_2_52 (G_ENCODE_VERSION (2, 52))
-#define SOUP_VERSION_2_54 (G_ENCODE_VERSION (2, 54))
-#define SOUP_VERSION_2_56 (G_ENCODE_VERSION (2, 56))
-#define SOUP_VERSION_2_58 (G_ENCODE_VERSION (2, 58))
-#define SOUP_VERSION_2_62 (G_ENCODE_VERSION (2, 62))
-#define SOUP_VERSION_2_66 (G_ENCODE_VERSION (2, 66))
-#define SOUP_VERSION_2_68 (G_ENCODE_VERSION (2, 68))
-#define SOUP_VERSION_2_70 (G_ENCODE_VERSION (2, 70))
-#define SOUP_VERSION_2_72 (G_ENCODE_VERSION (2, 72))
+{version_macros}
 
 /* evaluates to the current stable version; for development cycles,
  * this means the next stable target
@@ -112,311 +89,7 @@ G_BEGIN_DECLS
 #define SOUP_AVAILABLE_IN_ALL                   _SOUP_EXTERN
 #define SOUP_AVAILABLE_IN_2_4                   _SOUP_EXTERN
 
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_24
-# define SOUP_DEPRECATED_IN_2_24                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_24_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_24
-# define SOUP_DEPRECATED_IN_2_24_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_24
-# define SOUP_AVAILABLE_IN_2_24                 G_UNAVAILABLE(2, 24) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_24                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_26
-# define SOUP_DEPRECATED_IN_2_26                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_26_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_26
-# define SOUP_DEPRECATED_IN_2_26_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_26
-# define SOUP_AVAILABLE_IN_2_26                 G_UNAVAILABLE(2, 26) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_26                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_28
-# define SOUP_DEPRECATED_IN_2_28                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_28_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_28
-# define SOUP_DEPRECATED_IN_2_28_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_28
-# define SOUP_AVAILABLE_IN_2_28                 G_UNAVAILABLE(2, 28) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_28                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_30
-# define SOUP_DEPRECATED_IN_2_30                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_30_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_30
-# define SOUP_DEPRECATED_IN_2_30_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_30
-# define SOUP_AVAILABLE_IN_2_30                 G_UNAVAILABLE(2, 30) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_30                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_32
-# define SOUP_DEPRECATED_IN_2_32                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_32_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_32
-# define SOUP_DEPRECATED_IN_2_32_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_32
-# define SOUP_AVAILABLE_IN_2_32                 G_UNAVAILABLE(2, 32) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_32                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_34
-# define SOUP_DEPRECATED_IN_2_34                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_34_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_34
-# define SOUP_DEPRECATED_IN_2_34_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_34
-# define SOUP_AVAILABLE_IN_2_34                 G_UNAVAILABLE(2, 34) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_34                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_36
-# define SOUP_DEPRECATED_IN_2_36                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_36_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_36
-# define SOUP_DEPRECATED_IN_2_36_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_36
-# define SOUP_AVAILABLE_IN_2_36                 G_UNAVAILABLE(2, 36) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_36                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_38
-# define SOUP_DEPRECATED_IN_2_38                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_38_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_38
-# define SOUP_DEPRECATED_IN_2_38_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_38
-# define SOUP_AVAILABLE_IN_2_38                 G_UNAVAILABLE(2, 38) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_38                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_40
-# define SOUP_DEPRECATED_IN_2_40                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_40_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_40
-# define SOUP_DEPRECATED_IN_2_40_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_40
-# define SOUP_AVAILABLE_IN_2_40                 G_UNAVAILABLE(2, 40) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_40                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_42
-# define SOUP_DEPRECATED_IN_2_42                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_42_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_42
-# define SOUP_DEPRECATED_IN_2_42_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_42
-# define SOUP_AVAILABLE_IN_2_42                 G_UNAVAILABLE(2, 42) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_42                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_44
-# define SOUP_DEPRECATED_IN_2_44                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_44_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_44
-# define SOUP_DEPRECATED_IN_2_44_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_44
-# define SOUP_AVAILABLE_IN_2_44                 G_UNAVAILABLE(2, 44) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_44                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_46
-# define SOUP_DEPRECATED_IN_2_46                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_46_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_46
-# define SOUP_DEPRECATED_IN_2_46_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_46
-# define SOUP_AVAILABLE_IN_2_46                 G_UNAVAILABLE(2, 46) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_46                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_48
-# define SOUP_DEPRECATED_IN_2_48                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_48_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_48
-# define SOUP_DEPRECATED_IN_2_48_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_48
-# define SOUP_AVAILABLE_IN_2_48                 G_UNAVAILABLE(2, 48) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_48                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_50
-# define SOUP_DEPRECATED_IN_2_50                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_50_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_50
-# define SOUP_DEPRECATED_IN_2_50_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_50
-# define SOUP_AVAILABLE_IN_2_50                 G_UNAVAILABLE(2, 50) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_50                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_52
-# define SOUP_DEPRECATED_IN_2_52                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_52_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_52
-# define SOUP_DEPRECATED_IN_2_52_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_52
-# define SOUP_AVAILABLE_IN_2_52                 G_UNAVAILABLE(2, 52) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_52                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_54
-# define SOUP_DEPRECATED_IN_2_54                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_54_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_54
-# define SOUP_DEPRECATED_IN_2_54_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_54
-# define SOUP_AVAILABLE_IN_2_54                 G_UNAVAILABLE(2, 54) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_54                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_56
-# define SOUP_DEPRECATED_IN_2_56                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_56_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_56
-# define SOUP_DEPRECATED_IN_2_56_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_56
-# define SOUP_AVAILABLE_IN_2_56                 G_UNAVAILABLE(2, 56) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_56                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_58
-# define SOUP_DEPRECATED_IN_2_58                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_58_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_58
-# define SOUP_DEPRECATED_IN_2_58_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_58
-# define SOUP_AVAILABLE_IN_2_58                 G_UNAVAILABLE(2, 58) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_58                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_62
-# define SOUP_DEPRECATED_IN_2_62                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_62_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_62
-# define SOUP_DEPRECATED_IN_2_62_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_62
-# define SOUP_AVAILABLE_IN_2_62                 G_UNAVAILABLE(2, 62) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_62                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_66
-# define SOUP_DEPRECATED_IN_2_66                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_66_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_66
-# define SOUP_DEPRECATED_IN_2_66_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_66
-# define SOUP_AVAILABLE_IN_2_66                 G_UNAVAILABLE(2, 66) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_66                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_68
-# define SOUP_AVAILABLE_IN_2_68                 G_UNAVAILABLE(2, 68) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_68                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MIN_REQUIRED >= SOUP_VERSION_2_70
-# define SOUP_DEPRECATED_IN_2_70                G_DEPRECATED
-# define SOUP_DEPRECATED_IN_2_70_FOR(f)         G_DEPRECATED_FOR(f)
-#else
-# define SOUP_DEPRECATED_IN_2_70
-# define SOUP_DEPRECATED_IN_2_70_FOR(f)
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_70
-# define SOUP_AVAILABLE_IN_2_70                 G_UNAVAILABLE(2, 70) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_70                 _SOUP_EXTERN
-#endif
-
-#if SOUP_VERSION_MAX_ALLOWED < SOUP_VERSION_2_72
-# define SOUP_AVAILABLE_IN_2_72                 G_UNAVAILABLE(2, 72) _SOUP_EXTERN
-#else
-# define SOUP_AVAILABLE_IN_2_72                 _SOUP_EXTERN
-#endif
+{version_attributes}
 
 SOUP_AVAILABLE_IN_2_42
 guint    soup_get_major_version (void);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]