[Telepathy-commits] [telepathy-glib/master] Add tp_message_set_string_printf

Will Thompson will.thompson at collabora.co.uk
Thu Dec 18 10:41:55 PST 2008


---
 docs/reference/telepathy-glib-sections.txt |    1 +
 telepathy-glib/message-mixin.c             |   40 ++++++++++++++++++++++++++++
 telepathy-glib/message-mixin.h             |    2 +
 3 files changed, 43 insertions(+), 0 deletions(-)

diff --git a/docs/reference/telepathy-glib-sections.txt b/docs/reference/telepathy-glib-sections.txt
index 44f5e06..15f38af 100644
--- a/docs/reference/telepathy-glib-sections.txt
+++ b/docs/reference/telepathy-glib-sections.txt
@@ -1551,6 +1551,7 @@ tp_message_set_int16
 tp_message_set_int32
 tp_message_set_int64
 tp_message_set_string
+tp_message_set_string_printf
 tp_message_set_uint16
 tp_message_set_uint32
 tp_message_set_uint64
diff --git a/telepathy-glib/message-mixin.c b/telepathy-glib/message-mixin.c
index 5ba0bfc..84d4c3e 100644
--- a/telepathy-glib/message-mixin.c
+++ b/telepathy-glib/message-mixin.c
@@ -669,6 +669,46 @@ tp_message_set_string (TpMessage *self,
 
 
 /**
+ * tp_message_set_string_printf:
+ * @self: a message
+ * @part: a part number, which must be strictly less than the number
+ *  returned by tp_message_count_parts()
+ * @key: a key in the mapping representing the part
+ * @fmt: a printf-style format string for the string value
+ * @...: arguments for the format string
+ *
+ * Set @key in part @part of @self to have a string value constructed from a
+ * printf-style format string.
+ *
+ * @since 0.7.UNRELEASED
+ */
+void
+tp_message_set_string_printf (TpMessage *self,
+                              guint part,
+                              const gchar *key,
+                              const gchar *fmt,
+                              ...)
+{
+  va_list va;
+  gchar *s;
+  GValue *value;
+
+  g_return_if_fail (part < self->parts->len);
+  g_return_if_fail (key != NULL);
+  g_return_if_fail (fmt != NULL);
+
+  va_start (va, fmt);
+  s = g_strdup_vprintf (fmt, va);
+  va_end (va);
+
+  value = tp_g_value_slice_new (G_TYPE_STRING);
+  g_value_take_string (value, s);
+  g_hash_table_insert (g_ptr_array_index (self->parts, part),
+      g_strdup (key), value);
+}
+
+
+/**
  * tp_message_set_bytes:
  * @self: a message
  * @part: a part number, which must be strictly less than the number
diff --git a/telepathy-glib/message-mixin.h b/telepathy-glib/message-mixin.h
index a643b89..8b25b4d 100644
--- a/telepathy-glib/message-mixin.h
+++ b/telepathy-glib/message-mixin.h
@@ -68,6 +68,8 @@ void tp_message_set_uint64 (TpMessage *self, guint part, const gchar *key,
     guint64 u);
 void tp_message_set_string (TpMessage *self, guint part, const gchar *key,
     const gchar *s);
+void tp_message_set_string_printf (TpMessage *self, guint part,
+    const gchar *key, const gchar *fmt, ...) G_GNUC_PRINTF (4, 5);
 void tp_message_set_bytes (TpMessage *self, guint part, const gchar *key,
     guint len, gconstpointer bytes);
 void tp_message_set (TpMessage *self, guint part, const gchar *key,
-- 
1.5.6.5




More information about the Telepathy-commits mailing list