[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