From 4be5925ff700ea14aca81b021ee0544469ac837d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Alejandro=20Pi=C3=B1eiro?= Date: Wed, 19 Dec 2012 20:38:33 +0100 Subject: [PATCH] ATK lacks any kind of version utilities Added some versioning methods heavily based on gtk ones https://bugzilla.gnome.org/show_bug.cgi?id=690379 --- .gitignore | 1 + atk/Makefile.am | 4 +- atk/atk.h | 1 + atk/atkversion.c | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++ atk/atkversion.h.in | 115 +++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 1 + docs/atk-docs.sgml | 6 +++ docs/atk-sections.txt | 14 ++++++ 8 files changed, 268 insertions(+), 1 deletion(-) create mode 100644 atk/atkversion.c create mode 100644 atk/atkversion.h.in diff --git a/.gitignore b/.gitignore index d9e6ce3..b48d386 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ Makefile.in /missing /mkinstalldirs /stamp-h1 +atkversion.h \ No newline at end of file diff --git a/atk/Makefile.am b/atk/Makefile.am index 1532bdf..573f21f 100644 --- a/atk/Makefile.am +++ b/atk/Makefile.am @@ -58,6 +58,7 @@ atk_sources = \ atkutil.c \ atkmisc.c \ atkvalue.c \ + atkversion.c \ atkwindow.c libatk_1_0_la_SOURCES = \ @@ -100,6 +101,7 @@ atk_headers = \ libatkinclude_HEADERS = \ $(atk_headers) \ + atkversion.h \ atk-enum-types.h @@ -216,7 +218,7 @@ atk-$(ATK_API_VERSION).lib: libatk-$(ATK_API_VERSION).la atk.def lib -machine:$(LIB_EXE_MACHINE_FLAG) -name:libatk-$(ATK_API_VERSION)-$(LT_CURRENT_MINUS_AGE).dll -def:atk.def -out:$@ -EXTRA_DIST = atk.symbols atk.rc.in atkmarshal.list atkintl.h atk.rc +EXTRA_DIST = atk.symbols atk.rc.in atkmarshal.list atkintl.h atk.rc atkversion.h.in dist-hook: ../build/win32/vs9/atk.vcproj ../build/win32/vs10/atk.vcxproj ../build/win32/vs10/atk.vcxproj.filters diff --git a/atk/atk.h b/atk/atk.h index d51aa52..f686212 100755 --- a/atk/atk.h +++ b/atk/atk.h @@ -50,6 +50,7 @@ #include #include #include +#include #include #undef __ATK_H_INSIDE__ diff --git a/atk/atkversion.c b/atk/atkversion.c new file mode 100644 index 0000000..51f64b3 --- /dev/null +++ b/atk/atkversion.c @@ -0,0 +1,127 @@ +/* ATK - Accessibility Toolkit + * + * Copyright (C) 2012 Igalia, S.L. + * + * Author: Alejandro Piñeiro Iglesias + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "atk.h" + +/** + * SECTION:atkversion + * @Short_description: Variables and functions to check the ATK version + * @Title: Versioning macros + * + * ATK provides a set of macros and methods for checking the version + * of the library at compile and run time. + */ + +/** + * atk_get_major_version: + * + * Returns the major version number of the ATK library. (e.g. in ATK + * version 2.7.4 this is 2.) + * + * This function is in the library, so it represents the ATK library + * your code is running against. In contrast, the #ATK_MAJOR_VERSION + * macro represents the major version of the ATK headers you have + * included when compiling your code. + * + * Returns: the major version number of the ATK library + * + * Since: 2.7.4 + */ +guint +atk_get_major_version (void) +{ + return ATK_MAJOR_VERSION; +} + +/** + * atk_get_minor_version: + * + * Returns the minor version number of the ATK library. (e.g. in ATK + * version 2.7.4 this is 7.) + * + * This function is in the library, so it represents the ATK library + * your code is are running against. In contrast, the + * #ATK_MINOR_VERSION macro represents the minor version of the ATK + * headers you have included when compiling your code. + * + * Returns: the minor version number of the ATK library + * + * Since: 2.7.4 + */ +guint +atk_get_minor_version (void) +{ + return ATK_MINOR_VERSION; +} + +/** + * atk_get_micro_version: + * + * Returns the micro version number of the ATK library. (e.g. in ATK + * version 2.7.4 this is 4.) + * + * This function is in the library, so it represents the ATK library + * your code is are running against. In contrast, the + * #ATK_MICRO_VERSION macro represents the micro version of the ATK + * headers you have included when compiling your code. + * + * Returns: the micro version number of the ATK library + * + * Since: 2.7.4 + */ +guint +atk_get_micro_version (void) +{ + return ATK_MICRO_VERSION; +} + +/** + * atk_get_binary_age: + * + * Returns the binary age as passed to libtool when building the ATK + * library the process is running against. + * + * Returns: the binary age of the ATK library + * + * Since: 2.7.4 + */ +guint +atk_get_binary_age (void) +{ + return ATK_BINARY_AGE; +} + +/** + * atk_get_interface_age: + * + * Returns the interface age as passed to libtool when building the + * ATK library the process is running against. + * + * Returns: the interface age of the ATK library + * + * Since: 2.7.4 + */ +guint +atk_get_interface_age (void) +{ + return ATK_INTERFACE_AGE; +} diff --git a/atk/atkversion.h.in b/atk/atkversion.h.in new file mode 100644 index 0000000..65c9ece --- /dev/null +++ b/atk/atkversion.h.in @@ -0,0 +1,115 @@ +/* ATK - Accessibility Toolkit + * + * Copyright (C) 2012 Igalia, S.L. + * + * Author: Alejandro Piñeiro Iglesias + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library 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 + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#if defined(ATK_DISABLE_SINGLE_INCLUDES) && !defined (__ATK_H_INSIDE__) && !defined (ATK_COMPILATION) +#error "Only can be included directly." +#endif + +#ifndef __ATK_VERSION_H__ +#define __ATK_VERSION_H__ + +/** + * ATK_MAJOR_VERSION: + * + * Like atk_get_major_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + * + * Since: 2.7.4 + */ +#define ATK_MAJOR_VERSION (@ATK_MAJOR_VERSION@) + +/** + * ATK_MINOR_VERSION: + * + * Like atk_get_minor_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + * + * Since: 2.7.4 + */ +#define ATK_MINOR_VERSION (@ATK_MINOR_VERSION@) + +/** + * ATK_MICRO_VERSION: + * + * Like atk_get_micro_version(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + * + * Since: 2.7.4 + */ +#define ATK_MICRO_VERSION (@ATK_MICRO_VERSION@) + +/** + * ATK_BINARY_AGE: + * + * Like atk_get_binary_age(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + * + * Since: 2.7.4 + */ +#define ATK_BINARY_AGE (@ATK_BINARY_AGE@) + +/** + * ATK_INTERFACE_AGE: + * + * Like atk_get_interface_age(), but from the headers used at + * application compile time, rather than from the library linked + * against at application run time. + * + * Since: 2.7.4 + */ +#define ATK_INTERFACE_AGE (@ATK_INTERFACE_AGE@) + +/** + * ATK_CHECK_VERSION: + * @major: major version (e.g. 1 for version 1.2.5) + * @minor: minor version (e.g. 2 for version 1.2.5) + * @micro: micro version (e.g. 5 for version 1.2.5) + * + * Returns %TRUE if the version of the ATK header files is the same as + * or newer than the passed-in version. + * + * Since: 2.7.4 + */ +#define ATK_CHECK_VERSION(major,minor,micro) \ + (ATK_MAJOR_VERSION > (major) || \ + (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION > (minor)) || \ + (ATK_MAJOR_VERSION == (major) && ATK_MINOR_VERSION == (minor) && \ + ATK_MICRO_VERSION >= (micro))) + + +guint atk_get_major_version (void) G_GNUC_CONST; +guint atk_get_minor_version (void) G_GNUC_CONST; +guint atk_get_micro_version (void) G_GNUC_CONST; +guint atk_get_binary_age (void) G_GNUC_CONST; +guint atk_get_interface_age (void) G_GNUC_CONST; + +#define atk_major_version atk_get_major_version () +#define atk_minor_version atk_get_minor_version () +#define atk_micro_version atk_get_micro_version () +#define atk_binary_age atk_get_binary_age () +#define atk_interface_age atk_get_interface_age () + +#endif /* __ATK_VERSION_H__ */ diff --git a/configure.ac b/configure.ac index 81df4ce..dcb73a9 100644 --- a/configure.ac +++ b/configure.ac @@ -222,6 +222,7 @@ atk.pc atk-uninstalled.pc atk/Makefile atk/atk.rc +atk/atkversion.h tests/Makefile build/Makefile build/win32/Makefile diff --git a/docs/atk-docs.sgml b/docs/atk-docs.sgml index 71f0987..f7b22aa 100644 --- a/docs/atk-docs.sgml +++ b/docs/atk-docs.sgml @@ -28,6 +28,7 @@ + ]> @@ -69,6 +70,11 @@ &atk-AtkWindow; + + Utilities + &atk-AtkVersion; + + Index of all symbols diff --git a/docs/atk-sections.txt b/docs/atk-sections.txt index 79f58b6..cebef89 100644 --- a/docs/atk-sections.txt +++ b/docs/atk-sections.txt @@ -654,3 +654,17 @@ ATK_TYPE_WINDOW AtkWindowClass atk_window_get_type + +
+atkversion +Versioning Utilities +atk_get_major_version +atk_get_minor_version +atk_get_micro_version +atk_get_binary_age +atk_get_interface_age +ATK_MAJOR_VERSION +ATK_MINOR_VERSION +ATK_MICRO_VERSION +ATK_CHECK_VERSION +
-- 2.11.4.GIT