[libgdata] [core] Mark most getter functions as pure



commit f3d4e4261e0b1b06c2ab5ec401b08e518ed22090
Author: Philip Withnall <philip tecnocode co uk>
Date:   Sat Apr 3 00:02:49 2010 +0100

    [core] Mark most getter functions as pure
    
    Add G_GNUC_PURE to all applicable getter functions, which should allow gcc to
    optimise calls to libgdata in some cases. This required a little rewrite of
    the authentication system to ensure the username and password (etc.) are only
    changed on the #GDataService from the main thread.

 gdata/atom/gdata-author.h                         |    8 +-
 gdata/atom/gdata-category.h                       |    8 +-
 gdata/atom/gdata-generator.h                      |    8 +-
 gdata/atom/gdata-link.h                           |   14 +-
 gdata/exif/gdata-exif-tags.h                      |   18 +-
 gdata/gcontact/gdata-gcontact-calendar.h          |   10 +-
 gdata/gcontact/gdata-gcontact-event.h             |    4 +-
 gdata/gcontact/gdata-gcontact-external-id.h       |    8 +-
 gdata/gcontact/gdata-gcontact-jot.h               |    4 +-
 gdata/gcontact/gdata-gcontact-language.h          |    6 +-
 gdata/gcontact/gdata-gcontact-relation.h          |    6 +-
 gdata/gcontact/gdata-gcontact-website.h           |   10 +-
 gdata/gd/gdata-gd-email-address.h                 |   12 +-
 gdata/gd/gdata-gd-im-address.h                    |   12 +-
 gdata/gd/gdata-gd-name.h                          |   14 +-
 gdata/gd/gdata-gd-organization.h                  |   20 +-
 gdata/gd/gdata-gd-phone-number.h                  |   10 +-
 gdata/gd/gdata-gd-postal-address.h                |   36 ++--
 gdata/gd/gdata-gd-reminder.h                      |    6 +-
 gdata/gd/gdata-gd-when.h                          |    8 +-
 gdata/gd/gdata-gd-where.h                         |    8 +-
 gdata/gd/gdata-gd-who.h                           |    8 +-
 gdata/gdata-access-rule.h                         |    2 +-
 gdata/gdata-download-stream.h                     |    8 +-
 gdata/gdata-entry.h                               |   20 +-
 gdata/gdata-feed.h                                |   34 +-
 gdata/gdata-private.h                             |   10 +-
 gdata/gdata-query.h                               |   14 +-
 gdata/gdata-service.c                             |  324 ++++++++++-----------
 gdata/gdata-service.h                             |   12 +-
 gdata/gdata-upload-stream.h                       |   10 +-
 gdata/georss/gdata-georss-where.h                 |    4 +-
 gdata/media/gdata-media-category.h                |    6 +-
 gdata/media/gdata-media-content.h                 |   19 +-
 gdata/media/gdata-media-credit.h                  |    6 +-
 gdata/media/gdata-media-group.h                   |   20 +-
 gdata/media/gdata-media-thumbnail.h               |    9 +-
 gdata/services/calendar/gdata-calendar-calendar.h |   10 +-
 gdata/services/calendar/gdata-calendar-event.h    |   28 +-
 gdata/services/calendar/gdata-calendar-feed.h     |    4 +-
 gdata/services/calendar/gdata-calendar-query.h    |   10 +-
 gdata/services/contacts/gdata-contacts-contact.h  |   82 +++---
 gdata/services/contacts/gdata-contacts-query.h    |    8 +-
 gdata/services/documents/gdata-documents-entry.h  |    8 +-
 gdata/services/documents/gdata-documents-query.h  |   14 +-
 gdata/services/picasaweb/gdata-picasaweb-album.h  |   26 +-
 gdata/services/picasaweb/gdata-picasaweb-file.h   |   54 ++--
 gdata/services/picasaweb/gdata-picasaweb-query.h  |   10 +-
 gdata/services/picasaweb/gdata-picasaweb-user.h   |   12 +-
 gdata/services/youtube/gdata-youtube-content.h    |    2 +-
 gdata/services/youtube/gdata-youtube-control.h    |    4 +-
 gdata/services/youtube/gdata-youtube-credit.h     |    2 +-
 gdata/services/youtube/gdata-youtube-group.h      |    8 +-
 gdata/services/youtube/gdata-youtube-query.h      |   16 +-
 gdata/services/youtube/gdata-youtube-service.h    |    4 +-
 gdata/services/youtube/gdata-youtube-state.h      |    8 +-
 gdata/services/youtube/gdata-youtube-video.h      |   36 ++--
 57 files changed, 539 insertions(+), 543 deletions(-)
---
diff --git a/gdata/atom/gdata-author.h b/gdata/atom/gdata-author.h
index 7a625af..8580219 100644
--- a/gdata/atom/gdata-author.h
+++ b/gdata/atom/gdata-author.h
@@ -61,15 +61,15 @@ typedef struct {
 GType gdata_author_get_type (void) G_GNUC_CONST;
 
 GDataAuthor *gdata_author_new (const gchar *name, const gchar *uri, const gchar *email_address) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_author_compare (const GDataAuthor *a, const GDataAuthor *b);
+gint gdata_author_compare (const GDataAuthor *a, const GDataAuthor *b) G_GNUC_PURE;
 
-const gchar *gdata_author_get_name (GDataAuthor *self);
+const gchar *gdata_author_get_name (GDataAuthor *self) G_GNUC_PURE;
 void gdata_author_set_name (GDataAuthor *self, const gchar *name);
 
-const gchar *gdata_author_get_uri (GDataAuthor *self);
+const gchar *gdata_author_get_uri (GDataAuthor *self) G_GNUC_PURE;
 void gdata_author_set_uri (GDataAuthor *self, const gchar *uri);
 
-const gchar *gdata_author_get_email_address (GDataAuthor *self);
+const gchar *gdata_author_get_email_address (GDataAuthor *self) G_GNUC_PURE;
 void gdata_author_set_email_address (GDataAuthor *self, const gchar *email_address);
 
 G_END_DECLS
diff --git a/gdata/atom/gdata-category.h b/gdata/atom/gdata-category.h
index 226da82..48cbdb6 100644
--- a/gdata/atom/gdata-category.h
+++ b/gdata/atom/gdata-category.h
@@ -61,15 +61,15 @@ typedef struct {
 GType gdata_category_get_type (void) G_GNUC_CONST;
 
 GDataCategory *gdata_category_new (const gchar *term, const gchar *scheme, const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_category_compare (const GDataCategory *a, const GDataCategory *b);
+gint gdata_category_compare (const GDataCategory *a, const GDataCategory *b) G_GNUC_PURE;
 
-const gchar *gdata_category_get_term (GDataCategory *self);
+const gchar *gdata_category_get_term (GDataCategory *self) G_GNUC_PURE;
 void gdata_category_set_term (GDataCategory *self, const gchar *term);
 
-const gchar *gdata_category_get_scheme (GDataCategory *self);
+const gchar *gdata_category_get_scheme (GDataCategory *self) G_GNUC_PURE;
 void gdata_category_set_scheme (GDataCategory *self, const gchar *scheme);
 
-const gchar *gdata_category_get_label (GDataCategory *self);
+const gchar *gdata_category_get_label (GDataCategory *self) G_GNUC_PURE;
 void gdata_category_set_label (GDataCategory *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/atom/gdata-generator.h b/gdata/atom/gdata-generator.h
index 892e327..057abea 100644
--- a/gdata/atom/gdata-generator.h
+++ b/gdata/atom/gdata-generator.h
@@ -60,11 +60,11 @@ typedef struct {
 
 GType gdata_generator_get_type (void) G_GNUC_CONST;
 
-gint gdata_generator_compare (const GDataGenerator *a, const GDataGenerator *b);
+gint gdata_generator_compare (const GDataGenerator *a, const GDataGenerator *b) G_GNUC_PURE;
 
-const gchar *gdata_generator_get_name (GDataGenerator *self);
-const gchar *gdata_generator_get_uri (GDataGenerator *self);
-const gchar *gdata_generator_get_version (GDataGenerator *self);
+const gchar *gdata_generator_get_name (GDataGenerator *self) G_GNUC_PURE;
+const gchar *gdata_generator_get_uri (GDataGenerator *self) G_GNUC_PURE;
+const gchar *gdata_generator_get_version (GDataGenerator *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/atom/gdata-link.h b/gdata/atom/gdata-link.h
index 3036a21..10df3ce 100644
--- a/gdata/atom/gdata-link.h
+++ b/gdata/atom/gdata-link.h
@@ -146,24 +146,24 @@ typedef struct {
 GType gdata_link_get_type (void) G_GNUC_CONST;
 
 GDataLink *gdata_link_new (const gchar *uri, const gchar *relation_type) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_link_compare (const GDataLink *a, const GDataLink *b);
+gint gdata_link_compare (const GDataLink *a, const GDataLink *b) G_GNUC_PURE;
 
-const gchar *gdata_link_get_uri (GDataLink *self);
+const gchar *gdata_link_get_uri (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_uri (GDataLink *self, const gchar *uri);
 
-const gchar *gdata_link_get_relation_type (GDataLink *self);
+const gchar *gdata_link_get_relation_type (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_relation_type (GDataLink *self, const gchar *relation_type);
 
-const gchar *gdata_link_get_content_type (GDataLink *self);
+const gchar *gdata_link_get_content_type (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_content_type (GDataLink *self, const gchar *content_type);
 
-const gchar *gdata_link_get_language (GDataLink *self);
+const gchar *gdata_link_get_language (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_language (GDataLink *self, const gchar *language);
 
-const gchar *gdata_link_get_title (GDataLink *self);
+const gchar *gdata_link_get_title (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_title (GDataLink *self, const gchar *title);
 
-gint gdata_link_get_length (GDataLink *self);
+gint gdata_link_get_length (GDataLink *self) G_GNUC_PURE;
 void gdata_link_set_length (GDataLink *self, gint length);
 
 G_END_DECLS
diff --git a/gdata/exif/gdata-exif-tags.h b/gdata/exif/gdata-exif-tags.h
index 23ddc99..c64eac5 100644
--- a/gdata/exif/gdata-exif-tags.h
+++ b/gdata/exif/gdata-exif-tags.h
@@ -62,15 +62,15 @@ typedef struct {
 
 GType gdata_exif_tags_get_type (void) G_GNUC_CONST;
 
-gdouble gdata_exif_tags_get_distance (GDataExifTags *self);
-gdouble gdata_exif_tags_get_exposure (GDataExifTags *self);
-gboolean gdata_exif_tags_get_flash (GDataExifTags *self);
-gdouble gdata_exif_tags_get_focal_length (GDataExifTags *self);
-gdouble gdata_exif_tags_get_fstop (GDataExifTags *self);
-const gchar *gdata_exif_tags_get_image_unique_id (GDataExifTags *self);
-gint gdata_exif_tags_get_iso (GDataExifTags *self);
-const gchar *gdata_exif_tags_get_make (GDataExifTags *self);
-const gchar *gdata_exif_tags_get_model (GDataExifTags *self);
+gdouble gdata_exif_tags_get_distance (GDataExifTags *self) G_GNUC_PURE;
+gdouble gdata_exif_tags_get_exposure (GDataExifTags *self) G_GNUC_PURE;
+gboolean gdata_exif_tags_get_flash (GDataExifTags *self) G_GNUC_PURE;
+gdouble gdata_exif_tags_get_focal_length (GDataExifTags *self) G_GNUC_PURE;
+gdouble gdata_exif_tags_get_fstop (GDataExifTags *self) G_GNUC_PURE;
+const gchar *gdata_exif_tags_get_image_unique_id (GDataExifTags *self) G_GNUC_PURE;
+gint gdata_exif_tags_get_iso (GDataExifTags *self) G_GNUC_PURE;
+const gchar *gdata_exif_tags_get_make (GDataExifTags *self) G_GNUC_PURE;
+const gchar *gdata_exif_tags_get_model (GDataExifTags *self) G_GNUC_PURE;
 void gdata_exif_tags_get_time (GDataExifTags *self, GTimeVal *time);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-calendar.h b/gdata/gcontact/gdata-gcontact-calendar.h
index 7eb3777..ac7caaa 100644
--- a/gdata/gcontact/gdata-gcontact-calendar.h
+++ b/gdata/gcontact/gdata-gcontact-calendar.h
@@ -100,18 +100,18 @@ GType gdata_gcontact_calendar_get_type (void) G_GNUC_CONST;
 
 GDataGContactCalendar *gdata_gcontact_calendar_new (const gchar *uri, const gchar *relation_type,
                                                     const gchar *label, gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gcontact_calendar_compare (const GDataGContactCalendar *a, const GDataGContactCalendar *b);
+gint gdata_gcontact_calendar_compare (const GDataGContactCalendar *a, const GDataGContactCalendar *b) G_GNUC_PURE;
 
-const gchar *gdata_gcontact_calendar_get_uri (GDataGContactCalendar *self);
+const gchar *gdata_gcontact_calendar_get_uri (GDataGContactCalendar *self) G_GNUC_PURE;
 void gdata_gcontact_calendar_set_uri (GDataGContactCalendar *self, const gchar *uri);
 
-const gchar *gdata_gcontact_calendar_get_relation_type (GDataGContactCalendar *self);
+const gchar *gdata_gcontact_calendar_get_relation_type (GDataGContactCalendar *self) G_GNUC_PURE;
 void gdata_gcontact_calendar_set_relation_type (GDataGContactCalendar *self, const gchar *relation_type);
 
-const gchar *gdata_gcontact_calendar_get_label (GDataGContactCalendar *self);
+const gchar *gdata_gcontact_calendar_get_label (GDataGContactCalendar *self) G_GNUC_PURE;
 void gdata_gcontact_calendar_set_label (GDataGContactCalendar *self, const gchar *label);
 
-gboolean gdata_gcontact_calendar_is_primary (GDataGContactCalendar *self);
+gboolean gdata_gcontact_calendar_is_primary (GDataGContactCalendar *self) G_GNUC_PURE;
 void gdata_gcontact_calendar_set_is_primary (GDataGContactCalendar *self, gboolean is_primary);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-event.h b/gdata/gcontact/gdata-gcontact-event.h
index bbe0a99..c8063b6 100644
--- a/gdata/gcontact/gdata-gcontact-event.h
+++ b/gdata/gcontact/gdata-gcontact-event.h
@@ -92,10 +92,10 @@ GDataGContactEvent *gdata_gcontact_event_new (const GDate *date, const gchar *re
 void gdata_gcontact_event_get_date (GDataGContactEvent *self, GDate *date);
 void gdata_gcontact_event_set_date (GDataGContactEvent *self, const GDate *date);
 
-const gchar *gdata_gcontact_event_get_relation_type (GDataGContactEvent *self);
+const gchar *gdata_gcontact_event_get_relation_type (GDataGContactEvent *self) G_GNUC_PURE;
 void gdata_gcontact_event_set_relation_type (GDataGContactEvent *self, const gchar *relation_type);
 
-const gchar *gdata_gcontact_event_get_label (GDataGContactEvent *self);
+const gchar *gdata_gcontact_event_get_label (GDataGContactEvent *self) G_GNUC_PURE;
 void gdata_gcontact_event_set_label (GDataGContactEvent *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-external-id.h b/gdata/gcontact/gdata-gcontact-external-id.h
index 2da8bfc..7146f47 100644
--- a/gdata/gcontact/gdata-gcontact-external-id.h
+++ b/gdata/gcontact/gdata-gcontact-external-id.h
@@ -112,15 +112,15 @@ GType gdata_gcontact_external_id_get_type (void) G_GNUC_CONST;
 
 GDataGContactExternalID *gdata_gcontact_external_id_new (const gchar *value, const gchar *relation_type,
                                                          const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gcontact_external_id_compare (const GDataGContactExternalID *a, const GDataGContactExternalID *b);
+gint gdata_gcontact_external_id_compare (const GDataGContactExternalID *a, const GDataGContactExternalID *b) G_GNUC_PURE;
 
-const gchar *gdata_gcontact_external_id_get_value (GDataGContactExternalID *self);
+const gchar *gdata_gcontact_external_id_get_value (GDataGContactExternalID *self) G_GNUC_PURE;
 void gdata_gcontact_external_id_set_value (GDataGContactExternalID *self, const gchar *value);
 
-const gchar *gdata_gcontact_external_id_get_relation_type (GDataGContactExternalID *self);
+const gchar *gdata_gcontact_external_id_get_relation_type (GDataGContactExternalID *self) G_GNUC_PURE;
 void gdata_gcontact_external_id_set_relation_type (GDataGContactExternalID *self, const gchar *relation_type);
 
-const gchar *gdata_gcontact_external_id_get_label (GDataGContactExternalID *self);
+const gchar *gdata_gcontact_external_id_get_label (GDataGContactExternalID *self) G_GNUC_PURE;
 void gdata_gcontact_external_id_set_label (GDataGContactExternalID *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-jot.h b/gdata/gcontact/gdata-gcontact-jot.h
index 2eb8988..908ee86 100644
--- a/gdata/gcontact/gdata-gcontact-jot.h
+++ b/gdata/gcontact/gdata-gcontact-jot.h
@@ -124,10 +124,10 @@ GType gdata_gcontact_jot_get_type (void) G_GNUC_CONST;
 
 GDataGContactJot *gdata_gcontact_jot_new (const gchar *content, const gchar *relation_type) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_gcontact_jot_get_content (GDataGContactJot *self);
+const gchar *gdata_gcontact_jot_get_content (GDataGContactJot *self) G_GNUC_PURE;
 void gdata_gcontact_jot_set_content (GDataGContactJot *self, const gchar *content);
 
-const gchar *gdata_gcontact_jot_get_relation_type (GDataGContactJot *self);
+const gchar *gdata_gcontact_jot_get_relation_type (GDataGContactJot *self) G_GNUC_PURE;
 void gdata_gcontact_jot_set_relation_type (GDataGContactJot *self, const gchar *relation_type);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-language.h b/gdata/gcontact/gdata-gcontact-language.h
index af2e0ff..9995f52 100644
--- a/gdata/gcontact/gdata-gcontact-language.h
+++ b/gdata/gcontact/gdata-gcontact-language.h
@@ -63,12 +63,12 @@ typedef struct {
 GType gdata_gcontact_language_get_type (void) G_GNUC_CONST;
 
 GDataGContactLanguage *gdata_gcontact_language_new (const gchar *code, const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gcontact_language_compare (const GDataGContactLanguage *a, const GDataGContactLanguage *b);
+gint gdata_gcontact_language_compare (const GDataGContactLanguage *a, const GDataGContactLanguage *b) G_GNUC_PURE;
 
-const gchar *gdata_gcontact_language_get_code (GDataGContactLanguage *self);
+const gchar *gdata_gcontact_language_get_code (GDataGContactLanguage *self) G_GNUC_PURE;
 void gdata_gcontact_language_set_code (GDataGContactLanguage *self, const gchar *code);
 
-const gchar *gdata_gcontact_language_get_label (GDataGContactLanguage *self);
+const gchar *gdata_gcontact_language_get_label (GDataGContactLanguage *self) G_GNUC_PURE;
 void gdata_gcontact_language_set_label (GDataGContactLanguage *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-relation.h b/gdata/gcontact/gdata-gcontact-relation.h
index 73660f8..1c637a3 100644
--- a/gdata/gcontact/gdata-gcontact-relation.h
+++ b/gdata/gcontact/gdata-gcontact-relation.h
@@ -233,13 +233,13 @@ GType gdata_gcontact_relation_get_type (void) G_GNUC_CONST;
 GDataGContactRelation *gdata_gcontact_relation_new (const gchar *name, const gchar *relation_type,
                                                     const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_gcontact_relation_get_name (GDataGContactRelation *self);
+const gchar *gdata_gcontact_relation_get_name (GDataGContactRelation *self) G_GNUC_PURE;
 void gdata_gcontact_relation_set_name (GDataGContactRelation *self, const gchar *name);
 
-const gchar *gdata_gcontact_relation_get_relation_type (GDataGContactRelation *self);
+const gchar *gdata_gcontact_relation_get_relation_type (GDataGContactRelation *self) G_GNUC_PURE;
 void gdata_gcontact_relation_set_relation_type (GDataGContactRelation *self, const gchar *relation_type);
 
-const gchar *gdata_gcontact_relation_get_label (GDataGContactRelation *self);
+const gchar *gdata_gcontact_relation_get_label (GDataGContactRelation *self) G_GNUC_PURE;
 void gdata_gcontact_relation_set_label (GDataGContactRelation *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/gcontact/gdata-gcontact-website.h b/gdata/gcontact/gdata-gcontact-website.h
index 91bd585..bfdc225 100644
--- a/gdata/gcontact/gdata-gcontact-website.h
+++ b/gdata/gcontact/gdata-gcontact-website.h
@@ -148,18 +148,18 @@ GType gdata_gcontact_website_get_type (void) G_GNUC_CONST;
 
 GDataGContactWebsite *gdata_gcontact_website_new (const gchar *uri, const gchar *relation_type,
                                                   const gchar *label, gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gcontact_website_compare (const GDataGContactWebsite *a, const GDataGContactWebsite *b);
+gint gdata_gcontact_website_compare (const GDataGContactWebsite *a, const GDataGContactWebsite *b) G_GNUC_PURE;
 
-const gchar *gdata_gcontact_website_get_uri (GDataGContactWebsite *self);
+const gchar *gdata_gcontact_website_get_uri (GDataGContactWebsite *self) G_GNUC_PURE;
 void gdata_gcontact_website_set_uri (GDataGContactWebsite *self, const gchar *uri);
 
-const gchar *gdata_gcontact_website_get_relation_type (GDataGContactWebsite *self);
+const gchar *gdata_gcontact_website_get_relation_type (GDataGContactWebsite *self) G_GNUC_PURE;
 void gdata_gcontact_website_set_relation_type (GDataGContactWebsite *self, const gchar *relation_type);
 
-const gchar *gdata_gcontact_website_get_label (GDataGContactWebsite *self);
+const gchar *gdata_gcontact_website_get_label (GDataGContactWebsite *self) G_GNUC_PURE;
 void gdata_gcontact_website_set_label (GDataGContactWebsite *self, const gchar *label);
 
-gboolean gdata_gcontact_website_is_primary (GDataGContactWebsite *self);
+gboolean gdata_gcontact_website_is_primary (GDataGContactWebsite *self) G_GNUC_PURE;
 void gdata_gcontact_website_set_is_primary (GDataGContactWebsite *self, gboolean is_primary);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-email-address.h b/gdata/gd/gdata-gd-email-address.h
index 7f85335..401f379 100644
--- a/gdata/gd/gdata-gd-email-address.h
+++ b/gdata/gd/gdata-gd-email-address.h
@@ -91,21 +91,21 @@ GType gdata_gd_email_address_get_type (void) G_GNUC_CONST;
 
 GDataGDEmailAddress *gdata_gd_email_address_new (const gchar *address, const gchar *relation_type,
                                                  const gchar *label, gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_email_address_compare (const GDataGDEmailAddress *a, const GDataGDEmailAddress *b);
+gint gdata_gd_email_address_compare (const GDataGDEmailAddress *a, const GDataGDEmailAddress *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_email_address_get_address (GDataGDEmailAddress *self);
+const gchar *gdata_gd_email_address_get_address (GDataGDEmailAddress *self) G_GNUC_PURE;
 void gdata_gd_email_address_set_address (GDataGDEmailAddress *self, const gchar *address);
 
-const gchar *gdata_gd_email_address_get_relation_type (GDataGDEmailAddress *self);
+const gchar *gdata_gd_email_address_get_relation_type (GDataGDEmailAddress *self) G_GNUC_PURE;
 void gdata_gd_email_address_set_relation_type (GDataGDEmailAddress *self, const gchar *relation_type);
 
-const gchar *gdata_gd_email_address_get_label (GDataGDEmailAddress *self);
+const gchar *gdata_gd_email_address_get_label (GDataGDEmailAddress *self) G_GNUC_PURE;
 void gdata_gd_email_address_set_label (GDataGDEmailAddress *self, const gchar *label);
 
-const gchar *gdata_gd_email_address_get_display_name (GDataGDEmailAddress *self);
+const gchar *gdata_gd_email_address_get_display_name (GDataGDEmailAddress *self) G_GNUC_PURE;
 void gdata_gd_email_address_set_display_name (GDataGDEmailAddress *self, const gchar *display_name);
 
-gboolean gdata_gd_email_address_is_primary (GDataGDEmailAddress *self);
+gboolean gdata_gd_email_address_is_primary (GDataGDEmailAddress *self) G_GNUC_PURE;
 void gdata_gd_email_address_set_is_primary (GDataGDEmailAddress *self, gboolean is_primary);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-im-address.h b/gdata/gd/gdata-gd-im-address.h
index 18aad26..b87485e 100644
--- a/gdata/gd/gdata-gd-im-address.h
+++ b/gdata/gd/gdata-gd-im-address.h
@@ -172,21 +172,21 @@ GType gdata_gd_im_address_get_type (void) G_GNUC_CONST;
 
 GDataGDIMAddress *gdata_gd_im_address_new (const gchar *address, const gchar *protocol, const gchar *relation_type, const gchar *label,
                                            gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_im_address_compare (const GDataGDIMAddress *a, const GDataGDIMAddress *b);
+gint gdata_gd_im_address_compare (const GDataGDIMAddress *a, const GDataGDIMAddress *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_im_address_get_address (GDataGDIMAddress *self);
+const gchar *gdata_gd_im_address_get_address (GDataGDIMAddress *self) G_GNUC_PURE;
 void gdata_gd_im_address_set_address (GDataGDIMAddress *self, const gchar *address);
 
-const gchar *gdata_gd_im_address_get_protocol (GDataGDIMAddress *self);
+const gchar *gdata_gd_im_address_get_protocol (GDataGDIMAddress *self) G_GNUC_PURE;
 void gdata_gd_im_address_set_protocol (GDataGDIMAddress *self, const gchar *protocol);
 
-const gchar *gdata_gd_im_address_get_relation_type (GDataGDIMAddress *self);
+const gchar *gdata_gd_im_address_get_relation_type (GDataGDIMAddress *self) G_GNUC_PURE;
 void gdata_gd_im_address_set_relation_type (GDataGDIMAddress *self, const gchar *relation_type);
 
-const gchar *gdata_gd_im_address_get_label (GDataGDIMAddress *self);
+const gchar *gdata_gd_im_address_get_label (GDataGDIMAddress *self) G_GNUC_PURE;
 void gdata_gd_im_address_set_label (GDataGDIMAddress *self, const gchar *label);
 
-gboolean gdata_gd_im_address_is_primary (GDataGDIMAddress *self);
+gboolean gdata_gd_im_address_is_primary (GDataGDIMAddress *self) G_GNUC_PURE;
 void gdata_gd_im_address_set_is_primary (GDataGDIMAddress *self, gboolean is_primary);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-name.h b/gdata/gd/gdata-gd-name.h
index 99cdec8..f54c08c 100644
--- a/gdata/gd/gdata-gd-name.h
+++ b/gdata/gd/gdata-gd-name.h
@@ -63,24 +63,24 @@ typedef struct {
 GType gdata_gd_name_get_type (void) G_GNUC_CONST;
 
 GDataGDName *gdata_gd_name_new (const gchar *given_name, const gchar *family_name) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_name_compare (const GDataGDName *a, const GDataGDName *b);
+gint gdata_gd_name_compare (const GDataGDName *a, const GDataGDName *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_name_get_given_name (GDataGDName *self);
+const gchar *gdata_gd_name_get_given_name (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_given_name (GDataGDName *self, const gchar *given_name);
 
-const gchar *gdata_gd_name_get_additional_name (GDataGDName *self);
+const gchar *gdata_gd_name_get_additional_name (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_additional_name (GDataGDName *self, const gchar *additional_name);
 
-const gchar *gdata_gd_name_get_family_name (GDataGDName *self);
+const gchar *gdata_gd_name_get_family_name (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_family_name (GDataGDName *self, const gchar *family_name);
 
-const gchar *gdata_gd_name_get_prefix (GDataGDName *self);
+const gchar *gdata_gd_name_get_prefix (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_prefix (GDataGDName *self, const gchar *prefix);
 
-const gchar *gdata_gd_name_get_suffix (GDataGDName *self);
+const gchar *gdata_gd_name_get_suffix (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_suffix (GDataGDName *self, const gchar *suffix);
 
-const gchar *gdata_gd_name_get_full_name (GDataGDName *self);
+const gchar *gdata_gd_name_get_full_name (GDataGDName *self) G_GNUC_PURE;
 void gdata_gd_name_set_full_name (GDataGDName *self, const gchar *full_name);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-organization.h b/gdata/gd/gdata-gd-organization.h
index aa0e953..1707245 100644
--- a/gdata/gd/gdata-gd-organization.h
+++ b/gdata/gd/gdata-gd-organization.h
@@ -83,33 +83,33 @@ GType gdata_gd_organization_get_type (void) G_GNUC_CONST;
 
 GDataGDOrganization *gdata_gd_organization_new (const gchar *name, const gchar *title, const gchar *relation_type,
                                                 const gchar *label, gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_organization_compare (const GDataGDOrganization *a, const GDataGDOrganization *b);
+gint gdata_gd_organization_compare (const GDataGDOrganization *a, const GDataGDOrganization *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_organization_get_name (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_name (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_name (GDataGDOrganization *self, const gchar *name);
 
-const gchar *gdata_gd_organization_get_title (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_title (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_title (GDataGDOrganization *self, const gchar *title);
 
-const gchar *gdata_gd_organization_get_relation_type (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_relation_type (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_relation_type (GDataGDOrganization *self, const gchar *relation_type);
 
-const gchar *gdata_gd_organization_get_label (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_label (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_label (GDataGDOrganization *self, const gchar *label);
 
-gboolean gdata_gd_organization_is_primary (GDataGDOrganization *self);
+gboolean gdata_gd_organization_is_primary (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_is_primary (GDataGDOrganization *self, gboolean is_primary);
 
-const gchar *gdata_gd_organization_get_department (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_department (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_department (GDataGDOrganization *self, const gchar *department);
 
-const gchar *gdata_gd_organization_get_job_description (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_job_description (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_job_description (GDataGDOrganization *self, const gchar *job_description);
 
-const gchar *gdata_gd_organization_get_symbol (GDataGDOrganization *self);
+const gchar *gdata_gd_organization_get_symbol (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_symbol (GDataGDOrganization *self, const gchar *symbol);
 
-GDataGDWhere *gdata_gd_organization_get_location (GDataGDOrganization *self);
+GDataGDWhere *gdata_gd_organization_get_location (GDataGDOrganization *self) G_GNUC_PURE;
 void gdata_gd_organization_set_location (GDataGDOrganization *self, GDataGDWhere *location);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-phone-number.h b/gdata/gd/gdata-gd-phone-number.h
index e4c47f9..ae786bd 100644
--- a/gdata/gd/gdata-gd-phone-number.h
+++ b/gdata/gd/gdata-gd-phone-number.h
@@ -246,19 +246,19 @@ GDataGDPhoneNumber *gdata_gd_phone_number_new (const gchar *number, const gchar
                                                gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 gint gdata_gd_phone_number_compare (const GDataGDPhoneNumber *a, const GDataGDPhoneNumber *b);
 
-const gchar *gdata_gd_phone_number_get_number (GDataGDPhoneNumber *self);
+const gchar *gdata_gd_phone_number_get_number (GDataGDPhoneNumber *self) G_GNUC_PURE;
 void gdata_gd_phone_number_set_number (GDataGDPhoneNumber *self, const gchar *number);
 
-const gchar *gdata_gd_phone_number_get_uri (GDataGDPhoneNumber *self);
+const gchar *gdata_gd_phone_number_get_uri (GDataGDPhoneNumber *self) G_GNUC_PURE;
 void gdata_gd_phone_number_set_uri (GDataGDPhoneNumber *self, const gchar *uri);
 
-const gchar *gdata_gd_phone_number_get_relation_type (GDataGDPhoneNumber *self);
+const gchar *gdata_gd_phone_number_get_relation_type (GDataGDPhoneNumber *self) G_GNUC_PURE;
 void gdata_gd_phone_number_set_relation_type (GDataGDPhoneNumber *self, const gchar *relation_type);
 
-const gchar *gdata_gd_phone_number_get_label (GDataGDPhoneNumber *self);
+const gchar *gdata_gd_phone_number_get_label (GDataGDPhoneNumber *self) G_GNUC_PURE;
 void gdata_gd_phone_number_set_label (GDataGDPhoneNumber *self, const gchar *label);
 
-gboolean gdata_gd_phone_number_is_primary (GDataGDPhoneNumber *self);
+gboolean gdata_gd_phone_number_is_primary (GDataGDPhoneNumber *self) G_GNUC_PURE;
 void gdata_gd_phone_number_set_is_primary (GDataGDPhoneNumber *self, gboolean is_primary);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-postal-address.h b/gdata/gd/gdata-gd-postal-address.h
index 93d3b90..4739461 100644
--- a/gdata/gd/gdata-gd-postal-address.h
+++ b/gdata/gd/gdata-gd-postal-address.h
@@ -145,55 +145,55 @@ GType gdata_gd_postal_address_get_type (void) G_GNUC_CONST;
 
 GDataGDPostalAddress *gdata_gd_postal_address_new (const gchar *relation_type, const gchar *label,
                                                    gboolean is_primary) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_postal_address_compare (const GDataGDPostalAddress *a, const GDataGDPostalAddress *b);
+gint gdata_gd_postal_address_compare (const GDataGDPostalAddress *a, const GDataGDPostalAddress *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_postal_address_get_address (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_address (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_address (GDataGDPostalAddress *self, const gchar *address);
 
-const gchar *gdata_gd_postal_address_get_relation_type (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_relation_type (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_relation_type (GDataGDPostalAddress *self, const gchar *relation_type);
 
-const gchar *gdata_gd_postal_address_get_label (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_label (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_label (GDataGDPostalAddress *self, const gchar *label);
 
-gboolean gdata_gd_postal_address_is_primary (GDataGDPostalAddress *self);
+gboolean gdata_gd_postal_address_is_primary (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_is_primary (GDataGDPostalAddress *self, gboolean is_primary);
 
-const gchar *gdata_gd_postal_address_get_mail_class (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_mail_class (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_mail_class (GDataGDPostalAddress *self, const gchar *mail_class);
 
-const gchar *gdata_gd_postal_address_get_usage (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_usage (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_usage (GDataGDPostalAddress *self, const gchar *usage);
 
-const gchar *gdata_gd_postal_address_get_agent (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_agent (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_agent (GDataGDPostalAddress *self, const gchar *agent);
 
-const gchar *gdata_gd_postal_address_get_house_name (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_house_name (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_house_name (GDataGDPostalAddress *self, const gchar *house_name);
 
-const gchar *gdata_gd_postal_address_get_street (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_street (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_street (GDataGDPostalAddress *self, const gchar *street);
 
-const gchar *gdata_gd_postal_address_get_po_box (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_po_box (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_po_box (GDataGDPostalAddress *self, const gchar *po_box);
 
-const gchar *gdata_gd_postal_address_get_neighborhood (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_neighborhood (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_neighborhood (GDataGDPostalAddress *self, const gchar *neighborhood);
 
-const gchar *gdata_gd_postal_address_get_city (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_city (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_city (GDataGDPostalAddress *self, const gchar *city);
 
-const gchar *gdata_gd_postal_address_get_subregion (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_subregion (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_subregion (GDataGDPostalAddress *self, const gchar *subregion);
 
-const gchar *gdata_gd_postal_address_get_region (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_region (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_region (GDataGDPostalAddress *self, const gchar *region);
 
-const gchar *gdata_gd_postal_address_get_postcode (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_postcode (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_postcode (GDataGDPostalAddress *self, const gchar *postcode);
 
-const gchar *gdata_gd_postal_address_get_country (GDataGDPostalAddress *self);
-const gchar *gdata_gd_postal_address_get_country_code (GDataGDPostalAddress *self);
+const gchar *gdata_gd_postal_address_get_country (GDataGDPostalAddress *self) G_GNUC_PURE;
+const gchar *gdata_gd_postal_address_get_country_code (GDataGDPostalAddress *self) G_GNUC_PURE;
 void gdata_gd_postal_address_set_country (GDataGDPostalAddress *self, const gchar *country, const gchar *country_code);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-reminder.h b/gdata/gd/gdata-gd-reminder.h
index 4292163..e9af456 100644
--- a/gdata/gd/gdata-gd-reminder.h
+++ b/gdata/gd/gdata-gd-reminder.h
@@ -91,16 +91,16 @@ GType gdata_gd_reminder_get_type (void) G_GNUC_CONST;
 
 GDataGDReminder *gdata_gd_reminder_new (const gchar *method, const GTimeVal *absolute_time,
                                         gint relative_time) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_reminder_compare (const GDataGDReminder *a, const GDataGDReminder *b);
+gint gdata_gd_reminder_compare (const GDataGDReminder *a, const GDataGDReminder *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_reminder_get_method (GDataGDReminder *self);
+const gchar *gdata_gd_reminder_get_method (GDataGDReminder *self) G_GNUC_PURE;
 void gdata_gd_reminder_set_method (GDataGDReminder *self, const gchar *method);
 
 void gdata_gd_reminder_get_absolute_time (GDataGDReminder *self, GTimeVal *absolute_time);
 void gdata_gd_reminder_set_absolute_time (GDataGDReminder *self, const GTimeVal *absolute_time);
 gboolean gdata_gd_reminder_is_absolute_time (GDataGDReminder *self);
 
-gint gdata_gd_reminder_get_relative_time (GDataGDReminder *self);
+gint gdata_gd_reminder_get_relative_time (GDataGDReminder *self) G_GNUC_PURE;
 void gdata_gd_reminder_set_relative_time (GDataGDReminder *self, gint relative_time);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-when.h b/gdata/gd/gdata-gd-when.h
index 596759e..2c73fb6 100644
--- a/gdata/gd/gdata-gd-when.h
+++ b/gdata/gd/gdata-gd-when.h
@@ -145,7 +145,7 @@ typedef struct {
 GType gdata_gd_when_get_type (void) G_GNUC_CONST;
 
 GDataGDWhen *gdata_gd_when_new (const GTimeVal *start_time, const GTimeVal *end_time, gboolean is_date) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_when_compare (const GDataGDWhen *a, const GDataGDWhen *b);
+gint gdata_gd_when_compare (const GDataGDWhen *a, const GDataGDWhen *b) G_GNUC_PURE;
 
 void gdata_gd_when_get_start_time (GDataGDWhen *self, GTimeVal *start_time);
 void gdata_gd_when_set_start_time (GDataGDWhen *self, const GTimeVal *start_time);
@@ -153,13 +153,13 @@ void gdata_gd_when_set_start_time (GDataGDWhen *self, const GTimeVal *start_time
 void gdata_gd_when_get_end_time (GDataGDWhen *self, GTimeVal *end_time);
 void gdata_gd_when_set_end_time (GDataGDWhen *self, const GTimeVal *end_time);
 
-gboolean gdata_gd_when_is_date (GDataGDWhen *self);
+gboolean gdata_gd_when_is_date (GDataGDWhen *self) G_GNUC_PURE;
 void gdata_gd_when_set_is_date (GDataGDWhen *self, gboolean is_date);
 
-const gchar *gdata_gd_when_get_value_string (GDataGDWhen *self);
+const gchar *gdata_gd_when_get_value_string (GDataGDWhen *self) G_GNUC_PURE;
 void gdata_gd_when_set_value_string (GDataGDWhen *self, const gchar *value_string);
 
-GList *gdata_gd_when_get_reminders (GDataGDWhen *self);
+GList *gdata_gd_when_get_reminders (GDataGDWhen *self) G_GNUC_PURE;
 void gdata_gd_when_add_reminder (GDataGDWhen *self, GDataGDReminder *reminder);
 /* TODO: More reminder API */
 
diff --git a/gdata/gd/gdata-gd-where.h b/gdata/gd/gdata-gd-where.h
index 622bbc4..187f328 100644
--- a/gdata/gd/gdata-gd-where.h
+++ b/gdata/gd/gdata-gd-where.h
@@ -90,15 +90,15 @@ typedef struct {
 GType gdata_gd_where_get_type (void) G_GNUC_CONST;
 
 GDataGDWhere *gdata_gd_where_new (const gchar *relation_type, const gchar *value_string, const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_where_compare (const GDataGDWhere *a, const GDataGDWhere *b);
+gint gdata_gd_where_compare (const GDataGDWhere *a, const GDataGDWhere *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_where_get_relation_type (GDataGDWhere *self);
+const gchar *gdata_gd_where_get_relation_type (GDataGDWhere *self) G_GNUC_PURE;
 void gdata_gd_where_set_relation_type (GDataGDWhere *self, const gchar *relation_type);
 
-const gchar *gdata_gd_where_get_value_string (GDataGDWhere *self);
+const gchar *gdata_gd_where_get_value_string (GDataGDWhere *self) G_GNUC_PURE;
 void gdata_gd_where_set_value_string (GDataGDWhere *self, const gchar *value_string);
 
-const gchar *gdata_gd_where_get_label (GDataGDWhere *self);
+const gchar *gdata_gd_where_get_label (GDataGDWhere *self) G_GNUC_PURE;
 void gdata_gd_where_set_label (GDataGDWhere *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/gd/gdata-gd-who.h b/gdata/gd/gdata-gd-who.h
index 070bc79..1d1322c 100644
--- a/gdata/gd/gdata-gd-who.h
+++ b/gdata/gd/gdata-gd-who.h
@@ -102,15 +102,15 @@ GType gdata_gd_who_get_type (void) G_GNUC_CONST;
 
 GDataGDWho *gdata_gd_who_new (const gchar *relation_type, const gchar *value_string,
                               const gchar *email_address) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-gint gdata_gd_who_compare (const GDataGDWho *a, const GDataGDWho *b);
+gint gdata_gd_who_compare (const GDataGDWho *a, const GDataGDWho *b) G_GNUC_PURE;
 
-const gchar *gdata_gd_who_get_relation_type (GDataGDWho *self);
+const gchar *gdata_gd_who_get_relation_type (GDataGDWho *self) G_GNUC_PURE;
 void gdata_gd_who_set_relation_type (GDataGDWho *self, const gchar *relation_type);
 
-const gchar *gdata_gd_who_get_value_string (GDataGDWho *self);
+const gchar *gdata_gd_who_get_value_string (GDataGDWho *self) G_GNUC_PURE;
 void gdata_gd_who_set_value_string (GDataGDWho *self, const gchar *value_string);
 
-const gchar *gdata_gd_who_get_email_address (GDataGDWho *self);
+const gchar *gdata_gd_who_get_email_address (GDataGDWho *self) G_GNUC_PURE;
 void gdata_gd_who_set_email_address (GDataGDWho *self, const gchar *email_address);
 
 G_END_DECLS
diff --git a/gdata/gdata-access-rule.h b/gdata/gdata-access-rule.h
index f27c8fa..0725406 100644
--- a/gdata/gdata-access-rule.h
+++ b/gdata/gdata-access-rule.h
@@ -101,7 +101,7 @@ GType gdata_access_rule_get_type (void) G_GNUC_CONST;
 
 GDataAccessRule *gdata_access_rule_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_access_rule_get_role (GDataAccessRule *self);
+const gchar *gdata_access_rule_get_role (GDataAccessRule *self) G_GNUC_PURE;
 void gdata_access_rule_set_role (GDataAccessRule *self, const gchar *role);
 void gdata_access_rule_get_scope (GDataAccessRule *self, const gchar **type, const gchar **value);
 void gdata_access_rule_set_scope (GDataAccessRule *self, const gchar *type, const gchar *value);
diff --git a/gdata/gdata-download-stream.h b/gdata/gdata-download-stream.h
index 9a220d3..1601858 100644
--- a/gdata/gdata-download-stream.h
+++ b/gdata/gdata-download-stream.h
@@ -65,10 +65,10 @@ GType gdata_download_stream_get_type (void) G_GNUC_CONST;
 
 GInputStream *gdata_download_stream_new (GDataService *service, const gchar *download_uri) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-GDataService *gdata_download_stream_get_service (GDataDownloadStream *self);
-const gchar *gdata_download_stream_get_download_uri (GDataDownloadStream *self);
-const gchar *gdata_download_stream_get_content_type (GDataDownloadStream *self);
-gssize gdata_download_stream_get_content_length (GDataDownloadStream *self);
+GDataService *gdata_download_stream_get_service (GDataDownloadStream *self) G_GNUC_PURE;
+const gchar *gdata_download_stream_get_download_uri (GDataDownloadStream *self) G_GNUC_PURE;
+const gchar *gdata_download_stream_get_content_type (GDataDownloadStream *self) G_GNUC_PURE;
+gssize gdata_download_stream_get_content_length (GDataDownloadStream *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/gdata-entry.h b/gdata/gdata-entry.h
index df8f30e..212f070 100644
--- a/gdata/gdata-entry.h
+++ b/gdata/gdata-entry.h
@@ -66,26 +66,26 @@ GType gdata_entry_get_type (void) G_GNUC_CONST;
 
 GDataEntry *gdata_entry_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_entry_get_title (GDataEntry *self);
+const gchar *gdata_entry_get_title (GDataEntry *self) G_GNUC_PURE;
 void gdata_entry_set_title (GDataEntry *self, const gchar *title);
-const gchar *gdata_entry_get_summary (GDataEntry *self);
+const gchar *gdata_entry_get_summary (GDataEntry *self) G_GNUC_PURE;
 void gdata_entry_set_summary (GDataEntry *self, const gchar *summary);
-const gchar *gdata_entry_get_id (GDataEntry *self);
-const gchar *gdata_entry_get_etag (GDataEntry *self);
+const gchar *gdata_entry_get_id (GDataEntry *self) G_GNUC_PURE;
+const gchar *gdata_entry_get_etag (GDataEntry *self) G_GNUC_PURE;
 void gdata_entry_get_updated (GDataEntry *self, GTimeVal *updated);
 void gdata_entry_get_published (GDataEntry *self, GTimeVal *published);
 void gdata_entry_add_category (GDataEntry *self, GDataCategory *category);
-GList *gdata_entry_get_categories (GDataEntry *self);
-const gchar *gdata_entry_get_content (GDataEntry *self);
+GList *gdata_entry_get_categories (GDataEntry *self) G_GNUC_PURE;
+const gchar *gdata_entry_get_content (GDataEntry *self) G_GNUC_PURE;
 void gdata_entry_set_content (GDataEntry *self, const gchar *content);
 void gdata_entry_add_link (GDataEntry *self, GDataLink *link);
-GDataLink *gdata_entry_look_up_link (GDataEntry *self, const gchar *rel);
-GList *gdata_entry_look_up_links (GDataEntry *self, const gchar *rel);
+GDataLink *gdata_entry_look_up_link (GDataEntry *self, const gchar *rel) G_GNUC_PURE;
+GList *gdata_entry_look_up_links (GDataEntry *self, const gchar *rel) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 void gdata_entry_add_author (GDataEntry *self, GDataAuthor *author);
-const gchar *gdata_entry_get_rights (GDataEntry *self);
+const gchar *gdata_entry_get_rights (GDataEntry *self) G_GNUC_PURE;
 void gdata_entry_set_rights (GDataEntry *self, const gchar *rights);
 
-gboolean gdata_entry_is_inserted (GDataEntry *self);
+gboolean gdata_entry_is_inserted (GDataEntry *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/gdata-feed.h b/gdata/gdata-feed.h
index 05c8692..3b6e9cd 100644
--- a/gdata/gdata-feed.h
+++ b/gdata/gdata-feed.h
@@ -62,25 +62,25 @@ typedef struct {
 
 GType gdata_feed_get_type (void) G_GNUC_CONST;
 
-GList *gdata_feed_get_entries (GDataFeed *self);
-GDataEntry *gdata_feed_look_up_entry (GDataFeed *self, const gchar *id);
-GList *gdata_feed_get_categories (GDataFeed *self);
-GList *gdata_feed_get_links (GDataFeed *self);
-GDataLink *gdata_feed_look_up_link (GDataFeed *self, const gchar *rel);
-GList *gdata_feed_get_authors (GDataFeed *self);
+GList *gdata_feed_get_entries (GDataFeed *self) G_GNUC_PURE;
+GDataEntry *gdata_feed_look_up_entry (GDataFeed *self, const gchar *id) G_GNUC_PURE;
+GList *gdata_feed_get_categories (GDataFeed *self) G_GNUC_PURE;
+GList *gdata_feed_get_links (GDataFeed *self) G_GNUC_PURE;
+GDataLink *gdata_feed_look_up_link (GDataFeed *self, const gchar *rel) G_GNUC_PURE;
+GList *gdata_feed_get_authors (GDataFeed *self) G_GNUC_PURE;
 
-const gchar *gdata_feed_get_title (GDataFeed *self);
-const gchar *gdata_feed_get_subtitle (GDataFeed *self);
-const gchar *gdata_feed_get_id (GDataFeed *self);
-const gchar *gdata_feed_get_etag (GDataFeed *self);
+const gchar *gdata_feed_get_title (GDataFeed *self) G_GNUC_PURE;
+const gchar *gdata_feed_get_subtitle (GDataFeed *self) G_GNUC_PURE;
+const gchar *gdata_feed_get_id (GDataFeed *self) G_GNUC_PURE;
+const gchar *gdata_feed_get_etag (GDataFeed *self) G_GNUC_PURE;
 void gdata_feed_get_updated (GDataFeed *self, GTimeVal *updated);
-const gchar *gdata_feed_get_logo (GDataFeed *self);
-GDataGenerator *gdata_feed_get_generator (GDataFeed *self);
-const gchar *gdata_feed_get_rights (GDataFeed *self);
-guint gdata_feed_get_items_per_page (GDataFeed *self);
-guint gdata_feed_get_start_index (GDataFeed *self);
-guint gdata_feed_get_total_results (GDataFeed *self);
-const gchar *gdata_feed_get_icon (GDataFeed *self);
+const gchar *gdata_feed_get_logo (GDataFeed *self) G_GNUC_PURE;
+GDataGenerator *gdata_feed_get_generator (GDataFeed *self) G_GNUC_PURE;
+const gchar *gdata_feed_get_rights (GDataFeed *self) G_GNUC_PURE;
+guint gdata_feed_get_items_per_page (GDataFeed *self) G_GNUC_PURE;
+guint gdata_feed_get_start_index (GDataFeed *self) G_GNUC_PURE;
+guint gdata_feed_get_total_results (GDataFeed *self) G_GNUC_PURE;
+const gchar *gdata_feed_get_icon (GDataFeed *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/gdata-private.h b/gdata/gdata-private.h
index 71d825a..2e6fb29 100644
--- a/gdata/gdata-private.h
+++ b/gdata/gdata-private.h
@@ -45,14 +45,14 @@ typedef enum {
 } GDataLogLevel;
 
 #include "gdata-service.h"
-SoupSession *_gdata_service_get_session (GDataService *self);
+SoupSession *_gdata_service_get_session (GDataService *self) G_GNUC_PURE;
 void _gdata_service_set_authenticated (GDataService *self, gboolean authenticated);
 SoupMessage *_gdata_service_build_message (GDataService *self, const gchar *method, const gchar *uri, const gchar *etag, gboolean etag_if_match);
 guint _gdata_service_send_message (GDataService *self, SoupMessage *message, GCancellable *cancellable, GError **error);
 SoupMessage *_gdata_service_query (GDataService *self, const gchar *feed_uri, GDataQuery *query, GCancellable *cancellable,
                                    GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
-const gchar *_gdata_service_get_scheme (void);
-GDataLogLevel _gdata_service_get_log_level (void);
+const gchar *_gdata_service_get_scheme (void) G_GNUC_CONST;
+GDataLogLevel _gdata_service_get_log_level (void) G_GNUC_CONST;
 
 #include "gdata-query.h"
 void _gdata_query_set_next_uri (GDataQuery *self, const gchar *next_uri);
@@ -71,7 +71,7 @@ GDataFeed *_gdata_feed_new_from_xml (GType feed_type, const gchar *xml, gint len
                                      GDataQueryProgressCallback progress_callback, gpointer progress_user_data,
                                      GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 void _gdata_feed_add_entry (GDataFeed *self, GDataEntry *entry);
-gpointer _gdata_feed_parse_data_new(GType entry_type, GDataQueryProgressCallback progress_callback, gpointer progress_user_data);
+gpointer _gdata_feed_parse_data_new (GType entry_type, GDataQueryProgressCallback progress_callback, gpointer progress_user_data);
 void _gdata_feed_parse_data_free (gpointer data);
 void _gdata_feed_call_progress_callback (GDataFeed *self, gpointer user_data, GDataEntry *entry);
 
@@ -83,7 +83,7 @@ void _gdata_documents_entry_init_edited (GDataDocumentsEntry *self);
 
 #include "gdata/services/documents/gdata-documents-service.h"
 
-GDataService *_gdata_documents_service_get_spreadsheet_service (GDataDocumentsService *self);
+GDataService *_gdata_documents_service_get_spreadsheet_service (GDataDocumentsService *self) G_GNUC_PURE;
 
 #include "gdata-parser.h"
 
diff --git a/gdata/gdata-query.h b/gdata/gdata-query.h
index 18be955..858c2db 100644
--- a/gdata/gdata-query.h
+++ b/gdata/gdata-query.h
@@ -65,11 +65,11 @@ gchar *gdata_query_get_query_uri (GDataQuery *self, const gchar *feed_uri) G_GNU
 void gdata_query_next_page (GDataQuery *self);
 gboolean gdata_query_previous_page (GDataQuery *self);
 
-const gchar *gdata_query_get_q (GDataQuery *self);
+const gchar *gdata_query_get_q (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_q (GDataQuery *self, const gchar *q);
-const gchar *gdata_query_get_categories (GDataQuery *self);
+const gchar *gdata_query_get_categories (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_categories (GDataQuery *self, const gchar *categories);
-const gchar *gdata_query_get_author (GDataQuery *self);
+const gchar *gdata_query_get_author (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_author (GDataQuery *self, const gchar *author);
 void gdata_query_get_updated_min (GDataQuery *self, GTimeVal *updated_min);
 void gdata_query_set_updated_min (GDataQuery *self, const GTimeVal *updated_min);
@@ -79,13 +79,13 @@ void gdata_query_get_published_min (GDataQuery *self, GTimeVal *published_min);
 void gdata_query_set_published_min (GDataQuery *self, const GTimeVal *published_min);
 void gdata_query_get_published_max (GDataQuery *self, GTimeVal *published_max);
 void gdata_query_set_published_max (GDataQuery *self, const GTimeVal *published_max);
-guint gdata_query_get_start_index (GDataQuery *self);
+guint gdata_query_get_start_index (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_start_index (GDataQuery *self, guint start_index);
-gboolean gdata_query_is_strict (GDataQuery *self);
+gboolean gdata_query_is_strict (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_is_strict (GDataQuery *self, gboolean is_strict);
-guint gdata_query_get_max_results (GDataQuery *self);
+guint gdata_query_get_max_results (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_max_results (GDataQuery *self, guint max_results);
-const gchar *gdata_query_get_etag (GDataQuery *self);
+const gchar *gdata_query_get_etag (GDataQuery *self) G_GNUC_PURE;
 void gdata_query_set_etag (GDataQuery *self, const gchar *etag);
 
 G_END_DECLS
diff --git a/gdata/gdata-service.c b/gdata/gdata-service.c
index bca00f0..dd40f9a 100644
--- a/gdata/gdata-service.c
+++ b/gdata/gdata-service.c
@@ -478,153 +478,34 @@ real_parse_error_response (GDataService *self, GDataOperationType operation_type
 	}
 }
 
-typedef struct {
-	/* Input */
-	gchar *username;
-	gchar *password;
-
-	/* Output */
-	GDataService *service;
-	gboolean success;
-} AuthenticateAsyncData;
-
 static void
-authenticate_async_data_free (AuthenticateAsyncData *self)
-{
-	g_free (self->username);
-	g_free (self->password);
-	if (self->service != NULL)
-		g_object_unref (self->service);
-
-	g_slice_free (AuthenticateAsyncData, self);
-}
-
-static gboolean
-set_authentication_details_cb (AuthenticateAsyncData *data)
+set_authentication_details (GDataService *self, const gchar *username, const gchar *password, gboolean authenticated)
 {
-	GObject *service = G_OBJECT (data->service);
-	GDataServicePrivate *priv = data->service->priv;
-
-	g_free (priv->username);
-	/* Ensure the username is always a full e-mail address */
-	if (strchr (data->username, '@') == NULL)
-		priv->username = g_strdup_printf ("%s@" EMAIL_DOMAIN, data->username);
-	else
-		priv->username = g_strdup (data->username);
-
-	g_free (priv->password);
-	priv->password = g_strdup (data->password);
-	priv->authenticated = TRUE;
+	GObject *service = G_OBJECT (self);
+	GDataServicePrivate *priv = self->priv;
 
 	g_object_freeze_notify (service);
-	g_object_notify (service, "username");
-	g_object_notify (service, "password");
-	g_object_notify (service, "authenticated");
-	g_object_thaw_notify (service);
+	priv->authenticated = authenticated;
 
-	authenticate_async_data_free (data);
-
-	return FALSE;
-}
+	if (authenticated == TRUE) {
+		/* Update several properties the service holds */
+		g_free (priv->username);
 
-static void
-authenticate_thread (GSimpleAsyncResult *result, GDataService *service, GCancellable *cancellable)
-{
-	GError *error = NULL;
-	AuthenticateAsyncData *data = g_simple_async_result_get_op_res_gpointer (result);
+		/* Ensure the username is always a full e-mail address */
+		if (strchr (username, '@') == NULL)
+			priv->username = g_strdup_printf ("%s@" EMAIL_DOMAIN, username);
+		else
+			priv->username = g_strdup (username);
 
-	/* Check to see if it's been cancelled already */
-	if (g_cancellable_set_error_if_cancelled (cancellable, &error) == TRUE) {
-		g_simple_async_result_set_from_error (result, error);
-		g_error_free (error);
-		authenticate_async_data_free (data);
-		return;
-	}
+		g_free (priv->password);
+		priv->password = g_strdup (password);
 
-	/* Authenticate and return */
-	data->success = gdata_service_authenticate (service, data->username, data->password, cancellable, &error);
-	if (data->success == FALSE) {
-		g_simple_async_result_set_from_error (result, error);
-		g_error_free (error);
-		authenticate_async_data_free (data);
-		return;
+		g_object_notify (service, "username");
+		g_object_notify (service, "password");
 	}
 
-	/* Update the authentication details held by the service */
-	data->service = g_object_ref (service);
-	g_idle_add ((GSourceFunc) set_authentication_details_cb, data);
-}
-
-/**
- * gdata_service_authenticate_async:
- * @self: a #GDataService
- * @username: the user's username
- * @password: the user's password
- * @cancellable: optional #GCancellable object, or %NULL
- * @callback: a #GAsyncReadyCallback to call when authentication is finished
- * @user_data: data to pass to the @callback function
- *
- * Authenticates the #GDataService with the online service using the given @username and @password. @self, @username and
- * @password are all reffed/copied when this function is called, so can safely be freed after this function returns.
- *
- * For more details, see gdata_service_authenticate(), which is the synchronous version of this function.
- *
- * When the operation is finished, @callback will be called. You can then call gdata_service_authenticate_finish()
- * to get the results of the operation.
- **/
-void
-gdata_service_authenticate_async (GDataService *self, const gchar *username, const gchar *password,
-                                  GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
-{
-	GSimpleAsyncResult *result;
-	AuthenticateAsyncData *data;
-
-	g_return_if_fail (GDATA_IS_SERVICE (self));
-	g_return_if_fail (username != NULL);
-	g_return_if_fail (password != NULL);
-	g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
-
-	data = g_slice_new (AuthenticateAsyncData);
-	data->username = g_strdup (username);
-	data->password = g_strdup (password);
-	data->service = NULL; /* set in authenticate_thread() */
-
-	result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, gdata_service_authenticate_async);
-	g_simple_async_result_set_op_res_gpointer (result, data, NULL);
-	g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) authenticate_thread, G_PRIORITY_DEFAULT, cancellable);
-	g_object_unref (result);
-}
-
-/**
- * gdata_service_authenticate_finish:
- * @self: a #GDataService
- * @async_result: a #GAsyncResult
- * @error: a #GError, or %NULL
- *
- * Finishes an asynchronous authentication operation started with gdata_service_authenticate_async().
- *
- * Return value: %TRUE if authentication was successful, %FALSE otherwise
- **/
-gboolean
-gdata_service_authenticate_finish (GDataService *self, GAsyncResult *async_result, GError **error)
-{
-	GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
-	AuthenticateAsyncData *data;
-
-	g_return_val_if_fail (GDATA_IS_SERVICE (self), FALSE);
-	g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), FALSE);
-	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
-
-	g_warn_if_fail (g_simple_async_result_get_source_tag (result) == gdata_service_authenticate_async);
-
-	if (g_simple_async_result_propagate_error (result, error) == TRUE)
-		return FALSE;
-
-	data = g_simple_async_result_get_op_res_gpointer (result);
-	if (data->success == TRUE)
-		return TRUE;
-
-	g_assert_not_reached ();
+	g_object_notify (service, "authenticated");
+	g_object_thaw_notify (service);
 }
 
 static gboolean
@@ -791,7 +672,9 @@ authenticate (GDataService *self, const gchar *username, const gchar *password,
 
 login_error:
 		g_free (uri);
-		goto general_error;
+		g_object_unref (message);
+
+		return FALSE;
 	}
 
 	g_assert (message->response_body->data != NULL);
@@ -799,29 +682,6 @@ login_error:
 	retval = klass->parse_authentication_response (self, status, message->response_body->data, message->response_body->length, error);
 	g_object_unref (message);
 
-	g_object_freeze_notify (G_OBJECT (self));
-	priv->authenticated = retval;
-
-	if (retval == TRUE) {
-		/* Update several properties the service holds */
-		g_free (priv->username);
-
-		/* Ensure the username is always a full e-mail address */
-		if (strchr (username, '@') == NULL)
-			priv->username = g_strdup_printf ("%s@" EMAIL_DOMAIN, username);
-		else
-			priv->username = g_strdup (username);
-
-		g_free (priv->password);
-		priv->password = g_strdup (password);
-
-		g_object_notify (G_OBJECT (self), "username");
-		g_object_notify (G_OBJECT (self), "password");
-	}
-
-	g_object_notify (G_OBJECT (self), "authenticated");
-	g_object_thaw_notify (G_OBJECT (self));
-
 	return retval;
 
 protocol_error:
@@ -829,14 +689,141 @@ protocol_error:
 	klass->parse_error_response (self, GDATA_OPERATION_AUTHENTICATION, status, message->reason_phrase, message->response_body->data,
 	                             message->response_body->length, error);
 
-general_error:
 	g_object_unref (message);
-	priv->authenticated = FALSE;
-	g_object_notify (G_OBJECT (self), "authenticated");
 
 	return FALSE;
 }
 
+typedef struct {
+	/* Input */
+	gchar *username;
+	gchar *password;
+
+	/* Output */
+	GDataService *service;
+	gboolean success;
+} AuthenticateAsyncData;
+
+static void
+authenticate_async_data_free (AuthenticateAsyncData *self)
+{
+	g_free (self->username);
+	g_free (self->password);
+	if (self->service != NULL)
+		g_object_unref (self->service);
+
+	g_slice_free (AuthenticateAsyncData, self);
+}
+
+/* This is always called in the main thread via an idle function */
+static gboolean
+set_authentication_details_cb (AuthenticateAsyncData *data)
+{
+	set_authentication_details (data->service, data->username, data->password, data->success);
+	authenticate_async_data_free (data);
+
+	return FALSE;
+}
+
+static void
+authenticate_thread (GSimpleAsyncResult *result, GDataService *service, GCancellable *cancellable)
+{
+	GError *error = NULL;
+	AuthenticateAsyncData *data = g_simple_async_result_get_op_res_gpointer (result);
+
+	/* Check to see if it's been cancelled already */
+	if (g_cancellable_set_error_if_cancelled (cancellable, &error) == TRUE) {
+		g_simple_async_result_set_from_error (result, error);
+		g_error_free (error);
+		authenticate_async_data_free (data);
+		return;
+	}
+
+	/* Authenticate and return */
+	data->success = authenticate (service, data->username, data->password, NULL, NULL, cancellable, &error);
+	if (data->success == FALSE) {
+		g_simple_async_result_set_from_error (result, error);
+		g_error_free (error);
+	}
+
+	/* Update the authentication details held by the service in an idle function so that
+	 * the service is only ever modified in the main thread */
+	data->service = g_object_ref (service);
+	g_idle_add ((GSourceFunc) set_authentication_details_cb, data);
+}
+
+/**
+ * gdata_service_authenticate_async:
+ * @self: a #GDataService
+ * @username: the user's username
+ * @password: the user's password
+ * @cancellable: optional #GCancellable object, or %NULL
+ * @callback: a #GAsyncReadyCallback to call when authentication is finished
+ * @user_data: data to pass to the @callback function
+ *
+ * Authenticates the #GDataService with the online service using the given @username and @password. @self, @username and
+ * @password are all reffed/copied when this function is called, so can safely be freed after this function returns.
+ *
+ * For more details, see gdata_service_authenticate(), which is the synchronous version of this function.
+ *
+ * When the operation is finished, @callback will be called. You can then call gdata_service_authenticate_finish()
+ * to get the results of the operation.
+ **/
+void
+gdata_service_authenticate_async (GDataService *self, const gchar *username, const gchar *password,
+				  GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data)
+{
+	GSimpleAsyncResult *result;
+	AuthenticateAsyncData *data;
+
+	g_return_if_fail (GDATA_IS_SERVICE (self));
+	g_return_if_fail (username != NULL);
+	g_return_if_fail (password != NULL);
+	g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+
+	data = g_slice_new (AuthenticateAsyncData);
+	data->username = g_strdup (username);
+	data->password = g_strdup (password);
+	data->service = NULL; /* set in authenticate_thread() */
+
+	result = g_simple_async_result_new (G_OBJECT (self), callback, user_data, gdata_service_authenticate_async);
+	g_simple_async_result_set_op_res_gpointer (result, data, NULL);
+	g_simple_async_result_run_in_thread (result, (GSimpleAsyncThreadFunc) authenticate_thread, G_PRIORITY_DEFAULT, cancellable);
+	g_object_unref (result);
+}
+
+/**
+ * gdata_service_authenticate_finish:
+ * @self: a #GDataService
+ * @async_result: a #GAsyncResult
+ * @error: a #GError, or %NULL
+ *
+ * Finishes an asynchronous authentication operation started with gdata_service_authenticate_async().
+ *
+ * Return value: %TRUE if authentication was successful, %FALSE otherwise
+ **/
+gboolean
+gdata_service_authenticate_finish (GDataService *self, GAsyncResult *async_result, GError **error)
+{
+	GSimpleAsyncResult *result = G_SIMPLE_ASYNC_RESULT (async_result);
+	AuthenticateAsyncData *data;
+
+	g_return_val_if_fail (GDATA_IS_SERVICE (self), FALSE);
+	g_return_val_if_fail (G_IS_ASYNC_RESULT (async_result), FALSE);
+	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+	g_warn_if_fail (g_simple_async_result_get_source_tag (result) == gdata_service_authenticate_async);
+
+	if (g_simple_async_result_propagate_error (result, error) == TRUE)
+		return FALSE;
+
+	data = g_simple_async_result_get_op_res_gpointer (result);
+	if (data->success == TRUE)
+		return TRUE;
+
+	g_assert_not_reached ();
+}
+
 /**
  * gdata_service_authenticate:
  * @self: a #GDataService
@@ -868,13 +855,18 @@ general_error:
 gboolean
 gdata_service_authenticate (GDataService *self, const gchar *username, const gchar *password, GCancellable *cancellable, GError **error)
 {
+	gboolean retval;
+
 	g_return_val_if_fail (GDATA_IS_SERVICE (self), FALSE);
 	g_return_val_if_fail (username != NULL, FALSE);
 	g_return_val_if_fail (password != NULL, FALSE);
 	g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), FALSE);
 	g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
 
-	return authenticate (self, username, password, NULL, NULL, cancellable, error);
+	retval = authenticate (self, username, password, NULL, NULL, cancellable, error);
+	set_authentication_details (self, username, password, retval);
+
+	return retval;
 }
 
 SoupMessage *
@@ -1977,11 +1969,13 @@ gdata_service_is_authenticated (GDataService *self)
 	return self->priv->authenticated;
 }
 
+/* This should only ever be called in the main thread */
 void
 _gdata_service_set_authenticated (GDataService *self, gboolean authenticated)
 {
 	g_return_if_fail (GDATA_IS_SERVICE (self));
 	self->priv->authenticated = authenticated;
+	g_object_notify (G_OBJECT (self), "authenticated");
 }
 
 /**
diff --git a/gdata/gdata-service.h b/gdata/gdata-service.h
index d3562d7..eedd5b7 100644
--- a/gdata/gdata-service.h
+++ b/gdata/gdata-service.h
@@ -223,16 +223,16 @@ void gdata_service_delete_entry_async (GDataService *self, GDataEntry *entry, GC
                                        GAsyncReadyCallback callback, gpointer user_data);
 gboolean gdata_service_delete_entry_finish (GDataService *self, GAsyncResult *async_result, GError **error);
 
-SoupURI *gdata_service_get_proxy_uri (GDataService *self);
+SoupURI *gdata_service_get_proxy_uri (GDataService *self) G_GNUC_PURE;
 void gdata_service_set_proxy_uri (GDataService *self, SoupURI *proxy_uri);
 
-guint gdata_service_get_timeout (GDataService *self);
+guint gdata_service_get_timeout (GDataService *self) G_GNUC_PURE;
 void gdata_service_set_timeout (GDataService *self, guint timeout);
 
-gboolean gdata_service_is_authenticated (GDataService *self);
-const gchar *gdata_service_get_client_id (GDataService *self);
-const gchar *gdata_service_get_username (GDataService *self);
-const gchar *gdata_service_get_password (GDataService *self);
+gboolean gdata_service_is_authenticated (GDataService *self) G_GNUC_PURE;
+const gchar *gdata_service_get_client_id (GDataService *self) G_GNUC_PURE;
+const gchar *gdata_service_get_username (GDataService *self) G_GNUC_PURE;
+const gchar *gdata_service_get_password (GDataService *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/gdata-upload-stream.h b/gdata/gdata-upload-stream.h
index af64c8d..d726f71 100644
--- a/gdata/gdata-upload-stream.h
+++ b/gdata/gdata-upload-stream.h
@@ -69,11 +69,11 @@ GOutputStream *gdata_upload_stream_new (GDataService *service, const gchar *meth
 
 const gchar *gdata_upload_stream_get_response (GDataUploadStream *self, gssize *length);
 
-GDataService *gdata_upload_stream_get_service (GDataUploadStream *self);
-const gchar *gdata_upload_stream_get_upload_uri (GDataUploadStream *self);
-GDataEntry *gdata_upload_stream_get_entry (GDataUploadStream *self);
-const gchar *gdata_upload_stream_get_slug (GDataUploadStream *self);
-const gchar *gdata_upload_stream_get_content_type (GDataUploadStream *self);
+GDataService *gdata_upload_stream_get_service (GDataUploadStream *self) G_GNUC_PURE;
+const gchar *gdata_upload_stream_get_upload_uri (GDataUploadStream *self) G_GNUC_PURE;
+GDataEntry *gdata_upload_stream_get_entry (GDataUploadStream *self) G_GNUC_PURE;
+const gchar *gdata_upload_stream_get_slug (GDataUploadStream *self) G_GNUC_PURE;
+const gchar *gdata_upload_stream_get_content_type (GDataUploadStream *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/georss/gdata-georss-where.h b/gdata/georss/gdata-georss-where.h
index 964d09d..069ceb1 100644
--- a/gdata/georss/gdata-georss-where.h
+++ b/gdata/georss/gdata-georss-where.h
@@ -62,8 +62,8 @@ typedef struct {
 
 GType gdata_georss_where_get_type (void) G_GNUC_CONST;
 
-gdouble gdata_georss_where_get_latitude (GDataGeoRSSWhere *self);
-gdouble gdata_georss_where_get_longitude (GDataGeoRSSWhere *self);
+gdouble gdata_georss_where_get_latitude (GDataGeoRSSWhere *self) G_GNUC_PURE;
+gdouble gdata_georss_where_get_longitude (GDataGeoRSSWhere *self) G_GNUC_PURE;
 void gdata_georss_where_set_latitude (GDataGeoRSSWhere *self, gdouble latitude);
 void gdata_georss_where_set_longitude (GDataGeoRSSWhere *self, gdouble longitude);
 
diff --git a/gdata/media/gdata-media-category.h b/gdata/media/gdata-media-category.h
index 52a1066..1eb4aef 100644
--- a/gdata/media/gdata-media-category.h
+++ b/gdata/media/gdata-media-category.h
@@ -62,13 +62,13 @@ GType gdata_media_category_get_type (void) G_GNUC_CONST;
 
 GDataMediaCategory *gdata_media_category_new (const gchar *category, const gchar *scheme, const gchar *label) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_media_category_get_category (GDataMediaCategory *self);
+const gchar *gdata_media_category_get_category (GDataMediaCategory *self) G_GNUC_PURE;
 void gdata_media_category_set_category (GDataMediaCategory *self, const gchar *category);
 
-const gchar *gdata_media_category_get_scheme (GDataMediaCategory *self);
+const gchar *gdata_media_category_get_scheme (GDataMediaCategory *self) G_GNUC_PURE;
 void gdata_media_category_set_scheme (GDataMediaCategory *self, const gchar *scheme);
 
-const gchar *gdata_media_category_get_label (GDataMediaCategory *self);
+const gchar *gdata_media_category_get_label (GDataMediaCategory *self) G_GNUC_PURE;
 void gdata_media_category_set_label (GDataMediaCategory *self, const gchar *label);
 
 G_END_DECLS
diff --git a/gdata/media/gdata-media-content.h b/gdata/media/gdata-media-content.h
index 324a878..e8a1ad1 100644
--- a/gdata/media/gdata-media-content.h
+++ b/gdata/media/gdata-media-content.h
@@ -97,15 +97,16 @@ typedef struct {
 
 GType gdata_media_content_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_media_content_get_uri (GDataMediaContent *self);
-gsize gdata_media_content_get_filesize (GDataMediaContent *self);
-const gchar *gdata_media_content_get_content_type (GDataMediaContent *self);
-GDataMediaMedium gdata_media_content_get_medium (GDataMediaContent *self);
-gboolean gdata_media_content_is_default (GDataMediaContent *self);
-GDataMediaExpression gdata_media_content_get_expression (GDataMediaContent *self);
-gint64 gdata_media_content_get_duration (GDataMediaContent *self);
-guint gdata_media_content_get_height (GDataMediaContent *self);
-guint gdata_media_content_get_width (GDataMediaContent *self);
+const gchar *gdata_media_content_get_uri (GDataMediaContent *self) G_GNUC_PURE;
+gsize gdata_media_content_get_filesize (GDataMediaContent *self) G_GNUC_PURE;
+const gchar *gdata_media_content_get_content_type (GDataMediaContent *self) G_GNUC_PURE;
+GDataMediaMedium gdata_media_content_get_medium (GDataMediaContent *self) G_GNUC_PURE;
+gboolean gdata_media_content_is_default (GDataMediaContent *self) G_GNUC_PURE;
+GDataMediaExpression gdata_media_content_get_expression (GDataMediaContent *self) G_GNUC_PURE;
+gint64 gdata_media_content_get_duration (GDataMediaContent *self) G_GNUC_PURE;
+guint gdata_media_content_get_height (GDataMediaContent *self) G_GNUC_PURE;
+guint gdata_media_content_get_width (GDataMediaContent *self) G_GNUC_PURE;
+
 GFile *gdata_media_content_download (GDataMediaContent *self, GDataService *service, const gchar *default_filename, GFile *target_dest_file,
                                      gboolean replace_file_if_exists,
                                      GCancellable *cancellable, GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
diff --git a/gdata/media/gdata-media-credit.h b/gdata/media/gdata-media-credit.h
index 8ff49f9..3cfe132 100644
--- a/gdata/media/gdata-media-credit.h
+++ b/gdata/media/gdata-media-credit.h
@@ -60,9 +60,9 @@ typedef struct {
 
 GType gdata_media_credit_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_media_credit_get_credit (GDataMediaCredit *self);
-const gchar *gdata_media_credit_get_scheme (GDataMediaCredit *self);
-const gchar *gdata_media_credit_get_role (GDataMediaCredit *self);
+const gchar *gdata_media_credit_get_credit (GDataMediaCredit *self) G_GNUC_PURE;
+const gchar *gdata_media_credit_get_scheme (GDataMediaCredit *self) G_GNUC_PURE;
+const gchar *gdata_media_credit_get_role (GDataMediaCredit *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/media/gdata-media-group.h b/gdata/media/gdata-media-group.h
index a656213..9156699 100644
--- a/gdata/media/gdata-media-group.h
+++ b/gdata/media/gdata-media-group.h
@@ -64,22 +64,22 @@ typedef struct {
 
 GType gdata_media_group_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_media_group_get_title (GDataMediaGroup *self);
+const gchar *gdata_media_group_get_title (GDataMediaGroup *self) G_GNUC_PURE;
 void gdata_media_group_set_title (GDataMediaGroup *self, const gchar *title);
-const gchar *gdata_media_group_get_description (GDataMediaGroup *self);
+const gchar *gdata_media_group_get_description (GDataMediaGroup *self) G_GNUC_PURE;
 void gdata_media_group_set_description (GDataMediaGroup *self, const gchar *description);
-const gchar * const *gdata_media_group_get_keywords (GDataMediaGroup *self);
+const gchar * const *gdata_media_group_get_keywords (GDataMediaGroup *self) G_GNUC_PURE;
 void gdata_media_group_set_keywords (GDataMediaGroup *self, const gchar * const *keywords);
-GDataMediaCategory *gdata_media_group_get_category (GDataMediaGroup *self);
+GDataMediaCategory *gdata_media_group_get_category (GDataMediaGroup *self) G_GNUC_PURE;
 void gdata_media_group_set_category (GDataMediaGroup *self, GDataMediaCategory *category);
-GDataMediaContent *gdata_media_group_look_up_content (GDataMediaGroup *self, const gchar *type);
-GList *gdata_media_group_get_contents (GDataMediaGroup *self);
+GDataMediaContent *gdata_media_group_look_up_content (GDataMediaGroup *self, const gchar *type) G_GNUC_PURE;
+GList *gdata_media_group_get_contents (GDataMediaGroup *self) G_GNUC_PURE;
 void _gdata_media_group_add_content (GDataMediaGroup *self, GDataMediaContent *content);
-GDataMediaCredit *gdata_media_group_get_credit (GDataMediaGroup *self);
+GDataMediaCredit *gdata_media_group_get_credit (GDataMediaGroup *self) G_GNUC_PURE;
 void _gdata_media_group_set_credit (GDataMediaGroup *self, GDataMediaCredit *credit);
-const gchar *gdata_media_group_get_player_uri (GDataMediaGroup *self);
-gboolean gdata_media_group_is_restricted_in_country (GDataMediaGroup *self, const gchar *country);
-GList *gdata_media_group_get_thumbnails (GDataMediaGroup *self);
+const gchar *gdata_media_group_get_player_uri (GDataMediaGroup *self) G_GNUC_PURE;
+gboolean gdata_media_group_is_restricted_in_country (GDataMediaGroup *self, const gchar *country) G_GNUC_PURE;
+GList *gdata_media_group_get_thumbnails (GDataMediaGroup *self) G_GNUC_PURE;
 void _gdata_media_group_add_thumbnail (GDataMediaGroup *self, GDataMediaThumbnail *thumbnail);
 
 G_END_DECLS
diff --git a/gdata/media/gdata-media-thumbnail.h b/gdata/media/gdata-media-thumbnail.h
index 04387fa..c19d900 100644
--- a/gdata/media/gdata-media-thumbnail.h
+++ b/gdata/media/gdata-media-thumbnail.h
@@ -61,10 +61,11 @@ typedef struct {
 
 GType gdata_media_thumbnail_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_media_thumbnail_get_uri (GDataMediaThumbnail *self);
-guint gdata_media_thumbnail_get_height (GDataMediaThumbnail *self);
-guint gdata_media_thumbnail_get_width (GDataMediaThumbnail *self);
-gint64 gdata_media_thumbnail_get_time (GDataMediaThumbnail *self);
+const gchar *gdata_media_thumbnail_get_uri (GDataMediaThumbnail *self) G_GNUC_PURE;
+guint gdata_media_thumbnail_get_height (GDataMediaThumbnail *self) G_GNUC_PURE;
+guint gdata_media_thumbnail_get_width (GDataMediaThumbnail *self) G_GNUC_PURE;
+gint64 gdata_media_thumbnail_get_time (GDataMediaThumbnail *self) G_GNUC_PURE;
+
 GFile *gdata_media_thumbnail_download (GDataMediaThumbnail *self, GDataService *service, const gchar *default_filename, GFile *target_dest_file,
                                        gboolean replace_file_if_exists,
                                        GCancellable *cancellable, GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
diff --git a/gdata/services/calendar/gdata-calendar-calendar.h b/gdata/services/calendar/gdata-calendar-calendar.h
index a0d7539..820fbc7 100644
--- a/gdata/services/calendar/gdata-calendar-calendar.h
+++ b/gdata/services/calendar/gdata-calendar-calendar.h
@@ -107,16 +107,16 @@ GType gdata_calendar_calendar_get_type (void) G_GNUC_CONST;
 
 GDataCalendarCalendar *gdata_calendar_calendar_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_calendar_calendar_get_timezone (GDataCalendarCalendar *self);
+const gchar *gdata_calendar_calendar_get_timezone (GDataCalendarCalendar *self) G_GNUC_PURE;
 void gdata_calendar_calendar_set_timezone (GDataCalendarCalendar *self, const gchar *_timezone);
-guint gdata_calendar_calendar_get_times_cleaned (GDataCalendarCalendar *self);
-gboolean gdata_calendar_calendar_is_hidden (GDataCalendarCalendar *self);
+guint gdata_calendar_calendar_get_times_cleaned (GDataCalendarCalendar *self) G_GNUC_PURE;
+gboolean gdata_calendar_calendar_is_hidden (GDataCalendarCalendar *self) G_GNUC_PURE;
 void gdata_calendar_calendar_set_is_hidden (GDataCalendarCalendar *self, gboolean is_hidden);
 void gdata_calendar_calendar_get_color (GDataCalendarCalendar *self, GDataColor *color);
 void gdata_calendar_calendar_set_color (GDataCalendarCalendar *self, const GDataColor *color);
-gboolean gdata_calendar_calendar_is_selected (GDataCalendarCalendar *self);
+gboolean gdata_calendar_calendar_is_selected (GDataCalendarCalendar *self) G_GNUC_PURE;
 void gdata_calendar_calendar_set_is_selected (GDataCalendarCalendar *self, gboolean is_selected);
-const gchar *gdata_calendar_calendar_get_access_level (GDataCalendarCalendar *self);
+const gchar *gdata_calendar_calendar_get_access_level (GDataCalendarCalendar *self) G_GNUC_PURE;
 void gdata_calendar_calendar_get_edited (GDataCalendarCalendar *self, GTimeVal *edited);
 
 G_END_DECLS
diff --git a/gdata/services/calendar/gdata-calendar-event.h b/gdata/services/calendar/gdata-calendar-event.h
index 339c8a5..f096322 100644
--- a/gdata/services/calendar/gdata-calendar-event.h
+++ b/gdata/services/calendar/gdata-calendar-event.h
@@ -65,35 +65,35 @@ GType gdata_calendar_event_get_type (void) G_GNUC_CONST;
 GDataCalendarEvent *gdata_calendar_event_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
 void gdata_calendar_event_get_edited (GDataCalendarEvent *self, GTimeVal *edited);
-const gchar *gdata_calendar_event_get_status (GDataCalendarEvent *self);
+const gchar *gdata_calendar_event_get_status (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_status (GDataCalendarEvent *self, const gchar *status);
-const gchar *gdata_calendar_event_get_visibility (GDataCalendarEvent *self);
+const gchar *gdata_calendar_event_get_visibility (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_visibility (GDataCalendarEvent *self, const gchar *visibility);
-const gchar *gdata_calendar_event_get_transparency (GDataCalendarEvent *self);
+const gchar *gdata_calendar_event_get_transparency (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_transparency (GDataCalendarEvent *self, const gchar *transparency);
-const gchar *gdata_calendar_event_get_uid (GDataCalendarEvent *self);
+const gchar *gdata_calendar_event_get_uid (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_uid (GDataCalendarEvent *self, const gchar *uid);
-guint gdata_calendar_event_get_sequence (GDataCalendarEvent *self);
+guint gdata_calendar_event_get_sequence (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_sequence (GDataCalendarEvent *self, guint sequence);
-gboolean gdata_calendar_event_get_guests_can_modify (GDataCalendarEvent *self);
+gboolean gdata_calendar_event_get_guests_can_modify (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_guests_can_modify (GDataCalendarEvent *self, gboolean guests_can_modify);
-gboolean gdata_calendar_event_get_guests_can_invite_others (GDataCalendarEvent *self);
+gboolean gdata_calendar_event_get_guests_can_invite_others (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_guests_can_invite_others (GDataCalendarEvent *self, gboolean guests_can_invite_others);
-gboolean gdata_calendar_event_get_guests_can_see_guests (GDataCalendarEvent *self);
+gboolean gdata_calendar_event_get_guests_can_see_guests (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_guests_can_see_guests (GDataCalendarEvent *self, gboolean guests_can_see_guests);
-gboolean gdata_calendar_event_get_anyone_can_add_self (GDataCalendarEvent *self);
+gboolean gdata_calendar_event_get_anyone_can_add_self (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_anyone_can_add_self (GDataCalendarEvent *self, gboolean anyone_can_add_self);
 void gdata_calendar_event_add_person (GDataCalendarEvent *self, GDataGDWho *who);
-GList *gdata_calendar_event_get_people (GDataCalendarEvent *self);
+GList *gdata_calendar_event_get_people (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_add_place (GDataCalendarEvent *self, GDataGDWhere *where);
-GList *gdata_calendar_event_get_places (GDataCalendarEvent *self);
+GList *gdata_calendar_event_get_places (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_add_time (GDataCalendarEvent *self, GDataGDWhen *when);
-GList *gdata_calendar_event_get_times (GDataCalendarEvent *self);
+GList *gdata_calendar_event_get_times (GDataCalendarEvent *self) G_GNUC_PURE;
 gboolean gdata_calendar_event_get_primary_time (GDataCalendarEvent *self, GTimeVal *start_time, GTimeVal *end_time, GDataGDWhen **when);
-const gchar *gdata_calendar_event_get_recurrence (GDataCalendarEvent *self);
+const gchar *gdata_calendar_event_get_recurrence (GDataCalendarEvent *self) G_GNUC_PURE;
 void gdata_calendar_event_set_recurrence (GDataCalendarEvent *self, const gchar *recurrence);
 void gdata_calendar_event_get_original_event_details (GDataCalendarEvent *self, gchar **event_id, gchar **event_uri);
-gboolean gdata_calendar_event_is_exception (GDataCalendarEvent *self);
+gboolean gdata_calendar_event_is_exception (GDataCalendarEvent *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/calendar/gdata-calendar-feed.h b/gdata/services/calendar/gdata-calendar-feed.h
index 11cf2d3..2dcfabd 100644
--- a/gdata/services/calendar/gdata-calendar-feed.h
+++ b/gdata/services/calendar/gdata-calendar-feed.h
@@ -63,8 +63,8 @@ typedef struct {
 
 GType gdata_calendar_feed_get_type (void);
 
-const gchar *gdata_calendar_feed_get_timezone (GDataCalendarFeed *self);
-guint gdata_calendar_feed_get_times_cleaned (GDataCalendarFeed *self);
+const gchar *gdata_calendar_feed_get_timezone (GDataCalendarFeed *self) G_GNUC_PURE;
+guint gdata_calendar_feed_get_times_cleaned (GDataCalendarFeed *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/calendar/gdata-calendar-query.h b/gdata/services/calendar/gdata-calendar-query.h
index 649d165..9aecef9 100644
--- a/gdata/services/calendar/gdata-calendar-query.h
+++ b/gdata/services/calendar/gdata-calendar-query.h
@@ -63,23 +63,23 @@ GDataCalendarQuery *gdata_calendar_query_new (const gchar *q) G_GNUC_WARN_UNUSED
 GDataCalendarQuery *gdata_calendar_query_new_with_limits (const gchar *q, const GTimeVal *start_min,
                                                           const GTimeVal *start_max) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-gboolean gdata_calendar_query_get_future_events (GDataCalendarQuery *self);
+gboolean gdata_calendar_query_get_future_events (GDataCalendarQuery *self) G_GNUC_PURE;
 void gdata_calendar_query_set_future_events (GDataCalendarQuery *self, gboolean future_events);
-const gchar *gdata_calendar_query_get_order_by (GDataCalendarQuery *self);
+const gchar *gdata_calendar_query_get_order_by (GDataCalendarQuery *self) G_GNUC_PURE;
 void gdata_calendar_query_set_order_by (GDataCalendarQuery *self, const gchar *order_by);
 void gdata_calendar_query_get_recurrence_expansion_start (GDataCalendarQuery *self, GTimeVal *start);
 void gdata_calendar_query_set_recurrence_expansion_start (GDataCalendarQuery *self, const GTimeVal *start);
 void gdata_calendar_query_get_recurrence_expansion_end (GDataCalendarQuery *self, GTimeVal *end);
 void gdata_calendar_query_set_recurrence_expansion_end (GDataCalendarQuery *self, const GTimeVal *end);
-gboolean gdata_calendar_query_get_single_events (GDataCalendarQuery *self);
+gboolean gdata_calendar_query_get_single_events (GDataCalendarQuery *self) G_GNUC_PURE;
 void gdata_calendar_query_set_single_events (GDataCalendarQuery *self, gboolean single_events);
-const gchar *gdata_calendar_query_get_sort_order (GDataCalendarQuery *self);
+const gchar *gdata_calendar_query_get_sort_order (GDataCalendarQuery *self) G_GNUC_PURE;
 void gdata_calendar_query_set_sort_order (GDataCalendarQuery *self, const gchar *sort_order);
 void gdata_calendar_query_get_start_min (GDataCalendarQuery *self, GTimeVal *start_min);
 void gdata_calendar_query_set_start_min (GDataCalendarQuery *self, const GTimeVal *start_min);
 void gdata_calendar_query_get_start_max (GDataCalendarQuery *self, GTimeVal *start_max);
 void gdata_calendar_query_set_start_max (GDataCalendarQuery *self, const GTimeVal *start_max);
-const gchar *gdata_calendar_query_get_timezone (GDataCalendarQuery *self);
+const gchar *gdata_calendar_query_get_timezone (GDataCalendarQuery *self) G_GNUC_PURE;
 void gdata_calendar_query_set_timezone (GDataCalendarQuery *self, const gchar *_timezone);
 
 G_END_DECLS
diff --git a/gdata/services/contacts/gdata-contacts-contact.h b/gdata/services/contacts/gdata-contacts-contact.h
index 03096bc..7eb86e3 100644
--- a/gdata/services/contacts/gdata-contacts-contact.h
+++ b/gdata/services/contacts/gdata-contacts-contact.h
@@ -159,125 +159,125 @@ GType gdata_contacts_contact_get_type (void) G_GNUC_CONST;
 GDataContactsContact *gdata_contacts_contact_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
 void gdata_contacts_contact_get_edited (GDataContactsContact *self, GTimeVal *edited);
-gboolean gdata_contacts_contact_is_deleted (GDataContactsContact *self);
+gboolean gdata_contacts_contact_is_deleted (GDataContactsContact *self) G_GNUC_PURE;
 
-GDataGDName *gdata_contacts_contact_get_name (GDataContactsContact *self);
+GDataGDName *gdata_contacts_contact_get_name (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_name (GDataContactsContact *self, GDataGDName *name);
 
-const gchar *gdata_contacts_contact_get_nickname (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_nickname (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_nickname (GDataContactsContact *self, const gchar *nickname);
 
-gboolean gdata_contacts_contact_get_birthday (GDataContactsContact *self, GDate *birthday);
+gboolean gdata_contacts_contact_get_birthday (GDataContactsContact *self, GDate *birthday) G_GNUC_PURE;
 void gdata_contacts_contact_set_birthday (GDataContactsContact *self, GDate *birthday, gboolean birthday_has_year);
 
-const gchar *gdata_contacts_contact_get_billing_information (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_billing_information (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_billing_information (GDataContactsContact *self, const gchar *billing_information);
 
-const gchar *gdata_contacts_contact_get_directory_server (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_directory_server (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_directory_server (GDataContactsContact *self, const gchar *directory_server);
 
-const gchar *gdata_contacts_contact_get_gender (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_gender (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_gender (GDataContactsContact *self, const gchar *gender);
 
-const gchar *gdata_contacts_contact_get_initials (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_initials (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_initials (GDataContactsContact *self, const gchar *initials);
 
-const gchar *gdata_contacts_contact_get_maiden_name (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_maiden_name (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_maiden_name (GDataContactsContact *self, const gchar *maiden_name);
 
-const gchar *gdata_contacts_contact_get_mileage (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_mileage (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_mileage (GDataContactsContact *self, const gchar *mileage);
 
-const gchar *gdata_contacts_contact_get_occupation (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_occupation (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_occupation (GDataContactsContact *self, const gchar *occupation);
 
-const gchar *gdata_contacts_contact_get_priority (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_priority (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_priority (GDataContactsContact *self, const gchar *priority);
 
-const gchar *gdata_contacts_contact_get_sensitivity (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_sensitivity (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_sensitivity (GDataContactsContact *self, const gchar *sensitivity);
 
-const gchar *gdata_contacts_contact_get_short_name (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_short_name (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_short_name (GDataContactsContact *self, const gchar *short_name);
 
-const gchar *gdata_contacts_contact_get_subject (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_subject (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_subject (GDataContactsContact *self, const gchar *subject);
 
 void gdata_contacts_contact_add_email_address (GDataContactsContact *self, GDataGDEmailAddress *email_address);
-GList *gdata_contacts_contact_get_email_addresses (GDataContactsContact *self);
-GDataGDEmailAddress *gdata_contacts_contact_get_primary_email_address (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_email_addresses (GDataContactsContact *self) G_GNUC_PURE;
+GDataGDEmailAddress *gdata_contacts_contact_get_primary_email_address (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_email_addresses (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_im_address (GDataContactsContact *self, GDataGDIMAddress *im_address);
-GList *gdata_contacts_contact_get_im_addresses (GDataContactsContact *self);
-GDataGDIMAddress *gdata_contacts_contact_get_primary_im_address (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_im_addresses (GDataContactsContact *self) G_GNUC_PURE;
+GDataGDIMAddress *gdata_contacts_contact_get_primary_im_address (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_im_addresses (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_phone_number (GDataContactsContact *self, GDataGDPhoneNumber *phone_number);
-GList *gdata_contacts_contact_get_phone_numbers (GDataContactsContact *self);
-GDataGDPhoneNumber *gdata_contacts_contact_get_primary_phone_number (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_phone_numbers (GDataContactsContact *self) G_GNUC_PURE;
+GDataGDPhoneNumber *gdata_contacts_contact_get_primary_phone_number (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_phone_numbers (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_postal_address (GDataContactsContact *self, GDataGDPostalAddress *postal_address);
-GList *gdata_contacts_contact_get_postal_addresses (GDataContactsContact *self);
-GDataGDPostalAddress *gdata_contacts_contact_get_primary_postal_address (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_postal_addresses (GDataContactsContact *self) G_GNUC_PURE;
+GDataGDPostalAddress *gdata_contacts_contact_get_primary_postal_address (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_postal_addresses (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_organization (GDataContactsContact *self, GDataGDOrganization *organization);
-GList *gdata_contacts_contact_get_organizations (GDataContactsContact *self);
-GDataGDOrganization *gdata_contacts_contact_get_primary_organization (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_organizations (GDataContactsContact *self) G_GNUC_PURE;
+GDataGDOrganization *gdata_contacts_contact_get_primary_organization (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_organizations (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_jot (GDataContactsContact *self, GDataGContactJot *jot);
-GList *gdata_contacts_contact_get_jots (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_jots (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_jots (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_relation (GDataContactsContact *self, GDataGContactRelation *relation);
-GList *gdata_contacts_contact_get_relations (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_relations (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_relations (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_website (GDataContactsContact *self, GDataGContactWebsite *website);
-GList *gdata_contacts_contact_get_websites (GDataContactsContact *self);
-GDataGContactWebsite *gdata_contacts_contact_get_primary_website (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_websites (GDataContactsContact *self) G_GNUC_PURE;
+GDataGContactWebsite *gdata_contacts_contact_get_primary_website (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_websites (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_event (GDataContactsContact *self, GDataGContactEvent *event);
-GList *gdata_contacts_contact_get_events (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_events (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_events (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_calendar (GDataContactsContact *self, GDataGContactCalendar *calendar);
-GList *gdata_contacts_contact_get_calendars (GDataContactsContact *self);
-GDataGContactCalendar *gdata_contacts_contact_get_primary_calendar (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_calendars (GDataContactsContact *self) G_GNUC_PURE;
+GDataGContactCalendar *gdata_contacts_contact_get_primary_calendar (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_calendars (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_external_id (GDataContactsContact *self, GDataGContactExternalID *external_id);
-GList *gdata_contacts_contact_get_external_ids (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_external_ids (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_external_ids (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_hobby (GDataContactsContact *self, const gchar *hobby);
-GList *gdata_contacts_contact_get_hobbies (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_hobbies (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_hobbies (GDataContactsContact *self);
 
 void gdata_contacts_contact_add_language (GDataContactsContact *self, GDataGContactLanguage *language);
-GList *gdata_contacts_contact_get_languages (GDataContactsContact *self);
+GList *gdata_contacts_contact_get_languages (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_remove_all_languages (GDataContactsContact *self);
 
-const gchar *gdata_contacts_contact_get_extended_property (GDataContactsContact *self, const gchar *name);
-GHashTable *gdata_contacts_contact_get_extended_properties (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_extended_property (GDataContactsContact *self, const gchar *name) G_GNUC_PURE;
+GHashTable *gdata_contacts_contact_get_extended_properties (GDataContactsContact *self) G_GNUC_PURE;
 gboolean gdata_contacts_contact_set_extended_property (GDataContactsContact *self, const gchar *name, const gchar *value);
 
-const gchar *gdata_contacts_contact_get_user_defined_field (GDataContactsContact *self, const gchar *name);
-GHashTable *gdata_contacts_contact_get_user_defined_fields (GDataContactsContact *self);
+const gchar *gdata_contacts_contact_get_user_defined_field (GDataContactsContact *self, const gchar *name) G_GNUC_PURE;
+GHashTable *gdata_contacts_contact_get_user_defined_fields (GDataContactsContact *self) G_GNUC_PURE;
 void gdata_contacts_contact_set_user_defined_field (GDataContactsContact *self, const gchar *name, const gchar *value);
 
 void gdata_contacts_contact_add_group (GDataContactsContact *self, const gchar *href);
 void gdata_contacts_contact_remove_group (GDataContactsContact *self, const gchar *href);
-gboolean gdata_contacts_contact_is_group_deleted (GDataContactsContact *self, const gchar *href);
+gboolean gdata_contacts_contact_is_group_deleted (GDataContactsContact *self, const gchar *href) G_GNUC_PURE;
 GList *gdata_contacts_contact_get_groups (GDataContactsContact *self) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
 #include <gdata/services/contacts/gdata-contacts-service.h>
 
-gboolean gdata_contacts_contact_has_photo (GDataContactsContact *self);
+gboolean gdata_contacts_contact_has_photo (GDataContactsContact *self) G_GNUC_PURE;
 gchar *gdata_contacts_contact_get_photo (GDataContactsContact *self, GDataContactsService *service, gsize *length, gchar **content_type,
                                          GCancellable *cancellable, GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 gboolean gdata_contacts_contact_set_photo (GDataContactsContact *self, GDataService *service, const gchar *data, gsize length,
diff --git a/gdata/services/contacts/gdata-contacts-query.h b/gdata/services/contacts/gdata-contacts-query.h
index a00a6c5..a29eff6 100644
--- a/gdata/services/contacts/gdata-contacts-query.h
+++ b/gdata/services/contacts/gdata-contacts-query.h
@@ -66,13 +66,13 @@ GDataContactsQuery *gdata_contacts_query_new (const gchar *q) G_GNUC_WARN_UNUSED
 GDataContactsQuery *gdata_contacts_query_new_with_limits (const gchar *q, guint start_index,
                                                           guint max_results) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_contacts_query_get_order_by (GDataContactsQuery *self);
+const gchar *gdata_contacts_query_get_order_by (GDataContactsQuery *self) G_GNUC_PURE;
 void gdata_contacts_query_set_order_by (GDataContactsQuery *self, const gchar *order_by);
-gboolean gdata_contacts_query_show_deleted (GDataContactsQuery *self);
+gboolean gdata_contacts_query_show_deleted (GDataContactsQuery *self) G_GNUC_PURE;
 void gdata_contacts_query_set_show_deleted (GDataContactsQuery *self, gboolean show_deleted);
-const gchar *gdata_contacts_query_get_sort_order (GDataContactsQuery *self);
+const gchar *gdata_contacts_query_get_sort_order (GDataContactsQuery *self) G_GNUC_PURE;
 void gdata_contacts_query_set_sort_order (GDataContactsQuery *self, const gchar *sort_order);
-const gchar *gdata_contacts_query_get_group (GDataContactsQuery *self);
+const gchar *gdata_contacts_query_get_group (GDataContactsQuery *self) G_GNUC_PURE;
 void gdata_contacts_query_set_group (GDataContactsQuery *self, const gchar *group);
 
 G_END_DECLS
diff --git a/gdata/services/documents/gdata-documents-entry.h b/gdata/services/documents/gdata-documents-entry.h
index 5e9dcfe..82de8a0 100644
--- a/gdata/services/documents/gdata-documents-entry.h
+++ b/gdata/services/documents/gdata-documents-entry.h
@@ -94,17 +94,17 @@ GType gdata_documents_entry_get_type (void) G_GNUC_CONST;
 
 gchar *gdata_documents_entry_get_path (GDataDocumentsEntry *self) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_documents_entry_get_document_id (GDataDocumentsEntry *self);
+const gchar *gdata_documents_entry_get_document_id (GDataDocumentsEntry *self) G_GNUC_PURE;
 
 void gdata_documents_entry_get_edited (GDataDocumentsEntry *self, GTimeVal *edited);
 void gdata_documents_entry_get_last_viewed (GDataDocumentsEntry *self, GTimeVal *last_viewed);
 
 void gdata_documents_entry_set_writers_can_invite (GDataDocumentsEntry *self, gboolean writers_can_invite);
-gboolean gdata_documents_entry_writers_can_invite (GDataDocumentsEntry *self);
+gboolean gdata_documents_entry_writers_can_invite (GDataDocumentsEntry *self) G_GNUC_PURE;
 
-GDataAuthor *gdata_documents_entry_get_last_modified_by (GDataDocumentsEntry *self);
+GDataAuthor *gdata_documents_entry_get_last_modified_by (GDataDocumentsEntry *self) G_GNUC_PURE;
 
-gboolean gdata_documents_entry_is_deleted (GDataDocumentsEntry *self);
+gboolean gdata_documents_entry_is_deleted (GDataDocumentsEntry *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/documents/gdata-documents-query.h b/gdata/services/documents/gdata-documents-query.h
index d021b3d..14f734e 100644
--- a/gdata/services/documents/gdata-documents-query.h
+++ b/gdata/services/documents/gdata-documents-query.h
@@ -68,17 +68,17 @@ GDataDocumentsQuery *gdata_documents_query_new (const gchar *q) G_GNUC_WARN_UNUS
 GDataDocumentsQuery *gdata_documents_query_new_with_limits (const gchar *q,
                                                             guint start_index, guint max_results) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-gboolean gdata_documents_query_show_deleted (GDataDocumentsQuery *self);
+gboolean gdata_documents_query_show_deleted (GDataDocumentsQuery *self) G_GNUC_PURE;
 void gdata_documents_query_set_show_deleted (GDataDocumentsQuery *self, gboolean show_deleted);
-gboolean gdata_documents_query_show_folders (GDataDocumentsQuery *self);
+gboolean gdata_documents_query_show_folders (GDataDocumentsQuery *self) G_GNUC_PURE;
 void gdata_documents_query_set_show_folders (GDataDocumentsQuery *self, gboolean show_folders);
-const gchar *gdata_documents_query_get_folder_id (GDataDocumentsQuery *self);
+const gchar *gdata_documents_query_get_folder_id (GDataDocumentsQuery *self) G_GNUC_PURE;
 void gdata_documents_query_set_folder_id (GDataDocumentsQuery *self, const gchar *folder_id);
-const gchar *gdata_documents_query_get_title (GDataDocumentsQuery *self);
-gboolean gdata_documents_query_get_exact_title (GDataDocumentsQuery *self);
+const gchar *gdata_documents_query_get_title (GDataDocumentsQuery *self) G_GNUC_PURE;
+gboolean gdata_documents_query_get_exact_title (GDataDocumentsQuery *self) G_GNUC_PURE;
 void gdata_documents_query_set_title (GDataDocumentsQuery *self, const gchar *title, gboolean exact_title);
-GList *gdata_documents_query_get_collaborator_addresses (GDataDocumentsQuery *self);
-GList *gdata_documents_query_get_reader_addresses (GDataDocumentsQuery *self);
+GList *gdata_documents_query_get_collaborator_addresses (GDataDocumentsQuery *self) G_GNUC_PURE;
+GList *gdata_documents_query_get_reader_addresses (GDataDocumentsQuery *self) G_GNUC_PURE;
 void gdata_documents_query_add_reader (GDataDocumentsQuery *self, const gchar *email_address);
 void gdata_documents_query_add_collaborator (GDataDocumentsQuery *self, const gchar *email_address);
 
diff --git a/gdata/services/picasaweb/gdata-picasaweb-album.h b/gdata/services/picasaweb/gdata-picasaweb-album.h
index f3dc33e..1cec2d2 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-album.h
+++ b/gdata/services/picasaweb/gdata-picasaweb-album.h
@@ -80,26 +80,26 @@ GType gdata_picasaweb_album_get_type (void) G_GNUC_CONST;
 
 GDataPicasaWebAlbum *gdata_picasaweb_album_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_picasaweb_album_get_id (GDataPicasaWebAlbum *self);
-const gchar *gdata_picasaweb_album_get_user (GDataPicasaWebAlbum *self);
-const gchar *gdata_picasaweb_album_get_nickname (GDataPicasaWebAlbum *self);
+const gchar *gdata_picasaweb_album_get_id (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_album_get_user (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_album_get_nickname (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_get_edited (GDataPicasaWebAlbum *self, GTimeVal *edited);
-const gchar *gdata_picasaweb_album_get_location (GDataPicasaWebAlbum *self);
+const gchar *gdata_picasaweb_album_get_location (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_set_location (GDataPicasaWebAlbum *self, const gchar *location);
-GDataPicasaWebVisibility gdata_picasaweb_album_get_visibility (GDataPicasaWebAlbum *self);
+GDataPicasaWebVisibility gdata_picasaweb_album_get_visibility (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_set_visibility (GDataPicasaWebAlbum *self, GDataPicasaWebVisibility visibility);
 void gdata_picasaweb_album_get_timestamp (GDataPicasaWebAlbum *self, GTimeVal *timestamp);
 void gdata_picasaweb_album_set_timestamp (GDataPicasaWebAlbum *self, const GTimeVal *timestamp);
-guint gdata_picasaweb_album_get_num_photos (GDataPicasaWebAlbum *self);
-guint gdata_picasaweb_album_get_num_photos_remaining (GDataPicasaWebAlbum *self);
-glong gdata_picasaweb_album_get_bytes_used (GDataPicasaWebAlbum *self);
-gboolean gdata_picasaweb_album_is_commenting_enabled (GDataPicasaWebAlbum *self);
+guint gdata_picasaweb_album_get_num_photos (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+guint gdata_picasaweb_album_get_num_photos_remaining (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+glong gdata_picasaweb_album_get_bytes_used (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+gboolean gdata_picasaweb_album_is_commenting_enabled (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_set_is_commenting_enabled (GDataPicasaWebAlbum *self, gboolean is_commenting_enabled);
-guint gdata_picasaweb_album_get_comment_count (GDataPicasaWebAlbum *self);
-const gchar * const *gdata_picasaweb_album_get_tags (GDataPicasaWebAlbum *self);
+guint gdata_picasaweb_album_get_comment_count (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+const gchar * const *gdata_picasaweb_album_get_tags (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_set_tags (GDataPicasaWebAlbum *self, const gchar * const *tags);
-GList *gdata_picasaweb_album_get_contents (GDataPicasaWebAlbum *self);
-GList *gdata_picasaweb_album_get_thumbnails (GDataPicasaWebAlbum *self);
+GList *gdata_picasaweb_album_get_contents (GDataPicasaWebAlbum *self) G_GNUC_PURE;
+GList *gdata_picasaweb_album_get_thumbnails (GDataPicasaWebAlbum *self) G_GNUC_PURE;
 void gdata_picasaweb_album_get_coordinates (GDataPicasaWebAlbum *self, gdouble *latitude, gdouble *longitude);
 void gdata_picasaweb_album_set_coordinates (GDataPicasaWebAlbum *self, gdouble latitude, gdouble longitude);
 
diff --git a/gdata/services/picasaweb/gdata-picasaweb-file.h b/gdata/services/picasaweb/gdata-picasaweb-file.h
index 2351e45..ae23789 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-file.h
+++ b/gdata/services/picasaweb/gdata-picasaweb-file.h
@@ -102,45 +102,45 @@ GType gdata_picasaweb_file_get_type (void) G_GNUC_CONST;
 
 GDataPicasaWebFile *gdata_picasaweb_file_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_picasaweb_file_get_id (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_id (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_get_edited (GDataPicasaWebFile *self, GTimeVal *edited);
-const gchar *gdata_picasaweb_file_get_version (GDataPicasaWebFile *self);
-gdouble gdata_picasaweb_file_get_position (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_version (GDataPicasaWebFile *self) G_GNUC_PURE;
+gdouble gdata_picasaweb_file_get_position (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_position (GDataPicasaWebFile *self, gdouble position);
-const gchar *gdata_picasaweb_file_get_album_id (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_album_id (GDataPicasaWebFile *self) G_GNUC_PURE;
 /* TODO should we have a more obvious _move() API too? nah */
 void gdata_picasaweb_file_set_album_id (GDataPicasaWebFile *self, const gchar *album_id);
-guint gdata_picasaweb_file_get_width (GDataPicasaWebFile *self);
-guint gdata_picasaweb_file_get_height (GDataPicasaWebFile *self);
-gsize gdata_picasaweb_file_get_size (GDataPicasaWebFile *self);
-const gchar *gdata_picasaweb_file_get_client (GDataPicasaWebFile *self);
+guint gdata_picasaweb_file_get_width (GDataPicasaWebFile *self) G_GNUC_PURE;
+guint gdata_picasaweb_file_get_height (GDataPicasaWebFile *self) G_GNUC_PURE;
+gsize gdata_picasaweb_file_get_size (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_file_get_client (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_client (GDataPicasaWebFile *self, const gchar *client);
-const gchar *gdata_picasaweb_file_get_checksum (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_checksum (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_checksum (GDataPicasaWebFile *self, const gchar *checksum);
 void gdata_picasaweb_file_get_timestamp (GDataPicasaWebFile *self, GTimeVal *timestamp);
 void gdata_picasaweb_file_set_timestamp (GDataPicasaWebFile *self, const GTimeVal *timestamp);
-gboolean gdata_picasaweb_file_is_commenting_enabled (GDataPicasaWebFile *self);
+gboolean gdata_picasaweb_file_is_commenting_enabled (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_is_commenting_enabled (GDataPicasaWebFile *self, gboolean is_commenting_enabled);
-guint gdata_picasaweb_file_get_comment_count (GDataPicasaWebFile *self);
-guint gdata_picasaweb_file_get_rotation (GDataPicasaWebFile *self);
+guint gdata_picasaweb_file_get_comment_count (GDataPicasaWebFile *self) G_GNUC_PURE;
+guint gdata_picasaweb_file_get_rotation (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_rotation (GDataPicasaWebFile *self, guint rotation);
-const gchar *gdata_picasaweb_file_get_video_status (GDataPicasaWebFile *self);
-const gchar * const *gdata_picasaweb_file_get_tags (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_video_status (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar * const *gdata_picasaweb_file_get_tags (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_tags (GDataPicasaWebFile *self, const gchar * const *tags);
-const gchar *gdata_picasaweb_file_get_credit (GDataPicasaWebFile *self);
-const gchar *gdata_picasaweb_file_get_caption (GDataPicasaWebFile *self);
+const gchar *gdata_picasaweb_file_get_credit (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_file_get_caption (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_set_caption (GDataPicasaWebFile *self, const gchar *caption);
-GList *gdata_picasaweb_file_get_contents (GDataPicasaWebFile *self);
-GList *gdata_picasaweb_file_get_thumbnails (GDataPicasaWebFile *self);
-gdouble gdata_picasaweb_file_get_distance (GDataPicasaWebFile *self);
-gdouble gdata_picasaweb_file_get_exposure (GDataPicasaWebFile *self);
-gboolean gdata_picasaweb_file_get_flash (GDataPicasaWebFile *self);
-gdouble gdata_picasaweb_file_get_focal_length (GDataPicasaWebFile *self);
-gdouble gdata_picasaweb_file_get_fstop (GDataPicasaWebFile *self);
-const gchar *gdata_picasaweb_file_get_image_unique_id (GDataPicasaWebFile *self);
-gint gdata_picasaweb_file_get_iso (GDataPicasaWebFile *self);
-const gchar *gdata_picasaweb_file_get_make (GDataPicasaWebFile *self);
-const gchar *gdata_picasaweb_file_get_model (GDataPicasaWebFile *self);
+GList *gdata_picasaweb_file_get_contents (GDataPicasaWebFile *self) G_GNUC_PURE;
+GList *gdata_picasaweb_file_get_thumbnails (GDataPicasaWebFile *self) G_GNUC_PURE;
+gdouble gdata_picasaweb_file_get_distance (GDataPicasaWebFile *self) G_GNUC_PURE;
+gdouble gdata_picasaweb_file_get_exposure (GDataPicasaWebFile *self) G_GNUC_PURE;
+gboolean gdata_picasaweb_file_get_flash (GDataPicasaWebFile *self) G_GNUC_PURE;
+gdouble gdata_picasaweb_file_get_focal_length (GDataPicasaWebFile *self) G_GNUC_PURE;
+gdouble gdata_picasaweb_file_get_fstop (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_file_get_image_unique_id (GDataPicasaWebFile *self) G_GNUC_PURE;
+gint gdata_picasaweb_file_get_iso (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_file_get_make (GDataPicasaWebFile *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_file_get_model (GDataPicasaWebFile *self) G_GNUC_PURE;
 void gdata_picasaweb_file_get_coordinates (GDataPicasaWebFile *self, gdouble *latitude, gdouble *longitude);
 void gdata_picasaweb_file_set_coordinates (GDataPicasaWebFile *self, gdouble latitude, gdouble longitude);
 
diff --git a/gdata/services/picasaweb/gdata-picasaweb-query.h b/gdata/services/picasaweb/gdata-picasaweb-query.h
index 7fbff66..25f8db0 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-query.h
+++ b/gdata/services/picasaweb/gdata-picasaweb-query.h
@@ -68,17 +68,17 @@ GDataPicasaWebQuery *gdata_picasaweb_query_new (const gchar *q) G_GNUC_WARN_UNUS
 GDataPicasaWebQuery *gdata_picasaweb_query_new_with_limits (const gchar *q,
                                                             guint start_index, guint max_results) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-GDataPicasaWebVisibility gdata_picasaweb_query_get_visibility (GDataPicasaWebQuery *self);
+GDataPicasaWebVisibility gdata_picasaweb_query_get_visibility (GDataPicasaWebQuery *self) G_GNUC_PURE;
 void gdata_picasaweb_query_set_visibility (GDataPicasaWebQuery *self, GDataPicasaWebVisibility visibility);
-const gchar *gdata_picasaweb_query_get_thumbnail_size (GDataPicasaWebQuery *self);
+const gchar *gdata_picasaweb_query_get_thumbnail_size (GDataPicasaWebQuery *self) G_GNUC_PURE;
 void gdata_picasaweb_query_set_thumbnail_size (GDataPicasaWebQuery *self, const gchar *thumbnail_size);
-const gchar *gdata_picasaweb_query_get_image_size (GDataPicasaWebQuery *self);
+const gchar *gdata_picasaweb_query_get_image_size (GDataPicasaWebQuery *self) G_GNUC_PURE;
 void gdata_picasaweb_query_set_image_size (GDataPicasaWebQuery *self, const gchar *image_size);
-const gchar *gdata_picasaweb_query_get_tag (GDataPicasaWebQuery *self);
+const gchar *gdata_picasaweb_query_get_tag (GDataPicasaWebQuery *self) G_GNUC_PURE;
 void gdata_picasaweb_query_set_tag (GDataPicasaWebQuery *self, const gchar *tag);
 void gdata_picasaweb_query_get_bounding_box (GDataPicasaWebQuery *self, gdouble *north, gdouble *east, gdouble *south, gdouble *west);
 void gdata_picasaweb_query_set_bounding_box (GDataPicasaWebQuery *self, gdouble north, gdouble east, gdouble south, gdouble west);
-const gchar *gdata_picasaweb_query_get_location (GDataPicasaWebQuery *self);
+const gchar *gdata_picasaweb_query_get_location (GDataPicasaWebQuery *self) G_GNUC_PURE;
 void gdata_picasaweb_query_set_location (GDataPicasaWebQuery *self, const gchar *location);
 
 G_END_DECLS
diff --git a/gdata/services/picasaweb/gdata-picasaweb-user.h b/gdata/services/picasaweb/gdata-picasaweb-user.h
index 0dc0f60..bd92d14 100644
--- a/gdata/services/picasaweb/gdata-picasaweb-user.h
+++ b/gdata/services/picasaweb/gdata-picasaweb-user.h
@@ -64,12 +64,12 @@ typedef struct {
 
 GType gdata_picasaweb_user_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_picasaweb_user_get_user (GDataPicasaWebUser *self);
-const gchar *gdata_picasaweb_user_get_nickname (GDataPicasaWebUser *self);
-gint64 gdata_picasaweb_user_get_quota_limit (GDataPicasaWebUser *self);
-gint64 gdata_picasaweb_user_get_quota_current (GDataPicasaWebUser *self);
-gint gdata_picasaweb_user_get_max_photos_per_album (GDataPicasaWebUser *self);
-const gchar *gdata_picasaweb_user_get_thumbnail_uri (GDataPicasaWebUser *self);
+const gchar *gdata_picasaweb_user_get_user (GDataPicasaWebUser *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_user_get_nickname (GDataPicasaWebUser *self) G_GNUC_PURE;
+gint64 gdata_picasaweb_user_get_quota_limit (GDataPicasaWebUser *self) G_GNUC_PURE;
+gint64 gdata_picasaweb_user_get_quota_current (GDataPicasaWebUser *self) G_GNUC_PURE;
+gint gdata_picasaweb_user_get_max_photos_per_album (GDataPicasaWebUser *self) G_GNUC_PURE;
+const gchar *gdata_picasaweb_user_get_thumbnail_uri (GDataPicasaWebUser *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-content.h b/gdata/services/youtube/gdata-youtube-content.h
index c835c96..c5dc40b 100644
--- a/gdata/services/youtube/gdata-youtube-content.h
+++ b/gdata/services/youtube/gdata-youtube-content.h
@@ -81,7 +81,7 @@ typedef struct {
 } GDataYouTubeContentClass;
 
 GType gdata_youtube_content_get_type (void) G_GNUC_CONST;
-GDataYouTubeFormat gdata_youtube_content_get_format (GDataYouTubeContent *self);
+GDataYouTubeFormat gdata_youtube_content_get_format (GDataYouTubeContent *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-control.h b/gdata/services/youtube/gdata-youtube-control.h
index a49e94d..b331a6c 100644
--- a/gdata/services/youtube/gdata-youtube-control.h
+++ b/gdata/services/youtube/gdata-youtube-control.h
@@ -61,9 +61,9 @@ typedef struct {
 
 GType gdata_youtube_control_get_type (void) G_GNUC_CONST;
 
-gboolean gdata_youtube_control_is_draft (GDataYouTubeControl *self);
+gboolean gdata_youtube_control_is_draft (GDataYouTubeControl *self) G_GNUC_PURE;
 void gdata_youtube_control_set_is_draft (GDataYouTubeControl *self, gboolean is_draft);
-GDataYouTubeState *gdata_youtube_control_get_state (GDataYouTubeControl *self);
+GDataYouTubeState *gdata_youtube_control_get_state (GDataYouTubeControl *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-credit.h b/gdata/services/youtube/gdata-youtube-credit.h
index b1b5360..5c182c8 100644
--- a/gdata/services/youtube/gdata-youtube-credit.h
+++ b/gdata/services/youtube/gdata-youtube-credit.h
@@ -71,7 +71,7 @@ typedef struct {
 } GDataYouTubeCreditClass;
 
 GType gdata_youtube_credit_get_type (void) G_GNUC_CONST;
-const gchar *gdata_youtube_credit_get_entity_type (GDataYouTubeCredit *self);
+const gchar *gdata_youtube_credit_get_entity_type (GDataYouTubeCredit *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-group.h b/gdata/services/youtube/gdata-youtube-group.h
index f4f1367..828b252 100644
--- a/gdata/services/youtube/gdata-youtube-group.h
+++ b/gdata/services/youtube/gdata-youtube-group.h
@@ -62,12 +62,12 @@ typedef struct {
 
 GType gdata_youtube_group_get_type (void) G_GNUC_CONST;
 
-guint gdata_youtube_group_get_duration (GDataYouTubeGroup *self);
-gboolean gdata_youtube_group_is_private (GDataYouTubeGroup *self);
+guint gdata_youtube_group_get_duration (GDataYouTubeGroup *self) G_GNUC_PURE;
+gboolean gdata_youtube_group_is_private (GDataYouTubeGroup *self) G_GNUC_PURE;
 void gdata_youtube_group_set_is_private (GDataYouTubeGroup *self, gboolean is_private);
 void gdata_youtube_group_get_uploaded (GDataYouTubeGroup *self, GTimeVal *uploaded);
-const gchar *gdata_youtube_group_get_video_id (GDataYouTubeGroup *self);
-const gchar *gdata_youtube_group_get_aspect_ratio (GDataYouTubeGroup *self);
+const gchar *gdata_youtube_group_get_video_id (GDataYouTubeGroup *self) G_GNUC_PURE;
+const gchar *gdata_youtube_group_get_aspect_ratio (GDataYouTubeGroup *self) G_GNUC_PURE;
 void gdata_youtube_group_set_aspect_ratio (GDataYouTubeGroup *self, const gchar *aspect_ratio);
 
 G_END_DECLS
diff --git a/gdata/services/youtube/gdata-youtube-query.h b/gdata/services/youtube/gdata-youtube-query.h
index 6f76487..4d70b0f 100644
--- a/gdata/services/youtube/gdata-youtube-query.h
+++ b/gdata/services/youtube/gdata-youtube-query.h
@@ -133,23 +133,23 @@ GType gdata_youtube_query_get_type (void) G_GNUC_CONST;
 
 GDataYouTubeQuery *gdata_youtube_query_new (const gchar *q) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-GDataYouTubeFormat gdata_youtube_query_get_format (GDataYouTubeQuery *self);
+GDataYouTubeFormat gdata_youtube_query_get_format (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_format (GDataYouTubeQuery *self, GDataYouTubeFormat format);
 void gdata_youtube_query_get_location (GDataYouTubeQuery *self, gdouble *latitude, gdouble *longitude, gdouble *radius, gboolean *has_location);
 void gdata_youtube_query_set_location (GDataYouTubeQuery *self, gdouble latitude, gdouble longitude, gdouble radius, gboolean has_location);
-const gchar *gdata_youtube_query_get_language (GDataYouTubeQuery *self);
+const gchar *gdata_youtube_query_get_language (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_language (GDataYouTubeQuery *self, const gchar *language);
-const gchar *gdata_youtube_query_get_order_by (GDataYouTubeQuery *self);
+const gchar *gdata_youtube_query_get_order_by (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_order_by (GDataYouTubeQuery *self, const gchar *order_by);
-const gchar *gdata_youtube_query_get_restriction (GDataYouTubeQuery *self);
+const gchar *gdata_youtube_query_get_restriction (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_restriction (GDataYouTubeQuery *self, const gchar *restriction);
-GDataYouTubeSafeSearch gdata_youtube_query_get_safe_search (GDataYouTubeQuery *self);
+GDataYouTubeSafeSearch gdata_youtube_query_get_safe_search (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_safe_search (GDataYouTubeQuery *self, GDataYouTubeSafeSearch safe_search);
-GDataYouTubeSortOrder gdata_youtube_query_get_sort_order (GDataYouTubeQuery *self);
+GDataYouTubeSortOrder gdata_youtube_query_get_sort_order (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_sort_order (GDataYouTubeQuery *self, GDataYouTubeSortOrder sort_order);
-GDataYouTubeAge gdata_youtube_query_get_age (GDataYouTubeQuery *self);
+GDataYouTubeAge gdata_youtube_query_get_age (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_age (GDataYouTubeQuery *self, GDataYouTubeAge age);
-GDataYouTubeUploader gdata_youtube_query_get_uploader (GDataYouTubeQuery *self);
+GDataYouTubeUploader gdata_youtube_query_get_uploader (GDataYouTubeQuery *self) G_GNUC_PURE;
 void gdata_youtube_query_set_uploader (GDataYouTubeQuery *self, GDataYouTubeUploader uploader);
 
 G_END_DECLS
diff --git a/gdata/services/youtube/gdata-youtube-service.h b/gdata/services/youtube/gdata-youtube-service.h
index 4d5cf89..aea7693 100644
--- a/gdata/services/youtube/gdata-youtube-service.h
+++ b/gdata/services/youtube/gdata-youtube-service.h
@@ -133,8 +133,8 @@ void gdata_youtube_service_query_related_async (GDataYouTubeService *self, GData
 GDataYouTubeVideo *gdata_youtube_service_upload_video (GDataYouTubeService *self, GDataYouTubeVideo *video, GFile *video_file,
                                                        GCancellable *cancellable, GError **error) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-const gchar *gdata_youtube_service_get_developer_key (GDataYouTubeService *self);
-const gchar *gdata_youtube_service_get_youtube_user (GDataYouTubeService *self);
+const gchar *gdata_youtube_service_get_developer_key (GDataYouTubeService *self) G_GNUC_PURE;
+const gchar *gdata_youtube_service_get_youtube_user (GDataYouTubeService *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-state.h b/gdata/services/youtube/gdata-youtube-state.h
index 9dce23f..cb4e4d4 100644
--- a/gdata/services/youtube/gdata-youtube-state.h
+++ b/gdata/services/youtube/gdata-youtube-state.h
@@ -60,10 +60,10 @@ typedef struct {
 
 GType gdata_youtube_state_get_type (void) G_GNUC_CONST;
 
-const gchar *gdata_youtube_state_get_name (GDataYouTubeState *self);
-const gchar *gdata_youtube_state_get_reason_code (GDataYouTubeState *self);
-const gchar *gdata_youtube_state_get_help_uri (GDataYouTubeState *self);
-const gchar *gdata_youtube_state_get_message (GDataYouTubeState *self);
+const gchar *gdata_youtube_state_get_name (GDataYouTubeState *self) G_GNUC_PURE;
+const gchar *gdata_youtube_state_get_reason_code (GDataYouTubeState *self) G_GNUC_PURE;
+const gchar *gdata_youtube_state_get_help_uri (GDataYouTubeState *self) G_GNUC_PURE;
+const gchar *gdata_youtube_state_get_message (GDataYouTubeState *self) G_GNUC_PURE;
 
 G_END_DECLS
 
diff --git a/gdata/services/youtube/gdata-youtube-video.h b/gdata/services/youtube/gdata-youtube-video.h
index ac1f8f8..6c87330 100644
--- a/gdata/services/youtube/gdata-youtube-video.h
+++ b/gdata/services/youtube/gdata-youtube-video.h
@@ -149,35 +149,35 @@ GType gdata_youtube_video_get_type (void) G_GNUC_CONST;
 
 GDataYouTubeVideo *gdata_youtube_video_new (const gchar *id) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;
 
-guint gdata_youtube_video_get_view_count (GDataYouTubeVideo *self);
-guint gdata_youtube_video_get_favorite_count (GDataYouTubeVideo *self);
-const gchar *gdata_youtube_video_get_location (GDataYouTubeVideo *self);
+guint gdata_youtube_video_get_view_count (GDataYouTubeVideo *self) G_GNUC_PURE;
+guint gdata_youtube_video_get_favorite_count (GDataYouTubeVideo *self) G_GNUC_PURE;
+const gchar *gdata_youtube_video_get_location (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_location (GDataYouTubeVideo *self, const gchar *location);
-GDataYouTubePermission gdata_youtube_video_get_access_control (GDataYouTubeVideo *self, const gchar *action);
+GDataYouTubePermission gdata_youtube_video_get_access_control (GDataYouTubeVideo *self, const gchar *action) G_GNUC_PURE;
 void gdata_youtube_video_set_access_control (GDataYouTubeVideo *self, const gchar *action, GDataYouTubePermission permission);
 void gdata_youtube_video_get_rating (GDataYouTubeVideo *self, guint *min, guint *max, guint *count, gdouble *average);
-const gchar * const *gdata_youtube_video_get_keywords (GDataYouTubeVideo *self);
+const gchar * const *gdata_youtube_video_get_keywords (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_keywords (GDataYouTubeVideo *self, const gchar * const *keywords);
-const gchar *gdata_youtube_video_get_player_uri (GDataYouTubeVideo *self);
-gboolean gdata_youtube_video_is_restricted_in_country (GDataYouTubeVideo *self, const gchar *country);
-GDataMediaCategory *gdata_youtube_video_get_category (GDataYouTubeVideo *self);
+const gchar *gdata_youtube_video_get_player_uri (GDataYouTubeVideo *self) G_GNUC_PURE;
+gboolean gdata_youtube_video_is_restricted_in_country (GDataYouTubeVideo *self, const gchar *country) G_GNUC_PURE;
+GDataMediaCategory *gdata_youtube_video_get_category (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_category (GDataYouTubeVideo *self, GDataMediaCategory *category);
-GDataYouTubeCredit *gdata_youtube_video_get_credit (GDataYouTubeVideo *self);
-const gchar *gdata_youtube_video_get_description (GDataYouTubeVideo *self);
+GDataYouTubeCredit *gdata_youtube_video_get_credit (GDataYouTubeVideo *self) G_GNUC_PURE;
+const gchar *gdata_youtube_video_get_description (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_description (GDataYouTubeVideo *self, const gchar *description);
-GDataYouTubeContent *gdata_youtube_video_look_up_content (GDataYouTubeVideo *self, const gchar *type);
-GList *gdata_youtube_video_get_thumbnails (GDataYouTubeVideo *self);
-guint gdata_youtube_video_get_duration (GDataYouTubeVideo *self);
-gboolean gdata_youtube_video_is_private (GDataYouTubeVideo *self);
+GDataYouTubeContent *gdata_youtube_video_look_up_content (GDataYouTubeVideo *self, const gchar *type) G_GNUC_PURE;
+GList *gdata_youtube_video_get_thumbnails (GDataYouTubeVideo *self) G_GNUC_PURE;
+guint gdata_youtube_video_get_duration (GDataYouTubeVideo *self) G_GNUC_PURE;
+gboolean gdata_youtube_video_is_private (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_is_private (GDataYouTubeVideo *self, gboolean is_private);
 void gdata_youtube_video_get_uploaded (GDataYouTubeVideo *self, GTimeVal *uploaded);
-const gchar *gdata_youtube_video_get_video_id (GDataYouTubeVideo *self);
-gboolean gdata_youtube_video_is_draft (GDataYouTubeVideo *self);
+const gchar *gdata_youtube_video_get_video_id (GDataYouTubeVideo *self) G_GNUC_PURE;
+gboolean gdata_youtube_video_is_draft (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_is_draft (GDataYouTubeVideo *self, gboolean is_draft);
-GDataYouTubeState *gdata_youtube_video_get_state (GDataYouTubeVideo *self);
+GDataYouTubeState *gdata_youtube_video_get_state (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_get_recorded (GDataYouTubeVideo *self, GTimeVal *recorded);
 void gdata_youtube_video_set_recorded (GDataYouTubeVideo *self, const GTimeVal *recorded);
-const gchar *gdata_youtube_video_get_aspect_ratio (GDataYouTubeVideo *self);
+const gchar *gdata_youtube_video_get_aspect_ratio (GDataYouTubeVideo *self) G_GNUC_PURE;
 void gdata_youtube_video_set_aspect_ratio (GDataYouTubeVideo *self, const gchar *aspect_ratio);
 
 gchar *gdata_youtube_video_get_video_id_from_uri (const gchar *video_uri) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;



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