[telepathy-glib/master] Generate tp_error_get_dbus_name

Will Thompson will.thompson at collabora.co.uk
Tue May 26 08:20:22 PDT 2009


---
 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/errors.c                    |   12 ++++++++++++
 telepathy-glib/errors.h                    |    2 ++
 tools/glib-errors-str-gen.py               |   19 ++++++++++++++++++-
 4 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 0af80f3..b55cc8c 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -1595,6 +1595,7 @@ TP_TYPE_ERROR
 TpError
 tp_g_set_error_invalid_handle_type
 tp_g_set_error_unsupported_handle_type
+tp_error_get_dbus_name
 TP_ERROR_STR_NETWORK_ERROR
 TP_ERROR_STR_NOT_IMPLEMENTED
 TP_ERROR_STR_INVALID_ARGUMENT
diff --git a/telepathy-glib/errors.c b/telepathy-glib/errors.c
index e4d1e03..5cc8607 100644
--- a/telepathy-glib/errors.c
+++ b/telepathy-glib/errors.c
@@ -178,6 +178,18 @@ tp_g_set_error_unsupported_handle_type (guint type, GError **error)
       "unsupported handle type %u", type);
 }
 
+/**
+ * tp_error_get_dbus_name:
+ * @error: a member of the #TpError enum.
+ *
+ * <!-- -->
+ *
+ * Returns: the D-Bus error name corresponding to @error.
+ */
+/* tp_error_get_dbus_name is implemented in _gen/error-str.c by
+ * tools/glib-errors-str-gen.py.
+ */
+
 GQuark
 tp_errors_quark (void)
 {
diff --git a/telepathy-glib/errors.h b/telepathy-glib/errors.h
index 630544f..4387645 100644
--- a/telepathy-glib/errors.h
+++ b/telepathy-glib/errors.h
@@ -73,6 +73,8 @@ typedef enum {
     TP_ERROR_TERMINATED,
 } TpError;
 
+const gchar *tp_error_get_dbus_name (TpError error);
+
 G_END_DECLS
 
 #endif
diff --git a/tools/glib-errors-str-gen.py b/tools/glib-errors-str-gen.py
index ab7e873..c15889a 100644
--- a/tools/glib-errors-str-gen.py
+++ b/tools/glib-errors-str-gen.py
@@ -23,10 +23,19 @@ class Generator(object):
     def __call__(self):
         errors = self.errors.getElementsByTagNameNS(NS_TP, 'error')
 
+        self.b('#include <telepathy-glib/errors.h>')
+        self.b('')
+        self.b('const gchar *')
+        self.b('tp_error_get_dbus_name (TpError error)')
+        self.b('{')
+        self.b('  switch (error)')
+        self.b('    {')
+
         for error in errors:
             ns = error.parentNode.getAttribute('namespace')
             nick = error.getAttribute('name').replace(' ', '')
-            name = 'TP_ERROR_STR_' + camelcase_to_upper(nick.replace('.', ''))
+            uc_nick = camelcase_to_upper(nick.replace('.', ''))
+            name = 'TP_ERROR_STR_' + uc_nick
             error_name = '%s.%s' % (ns, nick)
 
             self.h('')
@@ -39,6 +48,14 @@ class Generator(object):
             self.h(' */')
             self.h('#define %s "%s"' % (name, error_name))
 
+            self.b('      case TP_ERROR_%s:' % uc_nick)
+            self.b('        return %s;' % name)
+
+        self.b('      default:')
+        self.b('        g_return_val_if_reached (NULL);')
+        self.b('    }')
+        self.b('}')
+
         open(self.basename + '.h', 'w').write('\n'.join(self.__header))
         open(self.basename + '.c', 'w').write('\n'.join(self.__body))
 
-- 
1.5.6.5




More information about the telepathy-commits mailing list