summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2014-10-05 19:26:59 +0200
committerCarlos Garnacho <carlosg@gnome.org>2014-12-23 11:11:32 +0100
commit2a939fd913db3ade85e7f71850bbd009690273d4 (patch)
tree2fdfeb363a134d4d38f5eade06ba3fece42f02d1
parent5c598dce8f092395c04d3b097669231c01cc0dc9 (diff)
downloadlibgdata-2a939fd913db3ade85e7f71850bbd009690273d4.tar.gz
freebase: Add GType for GDataFreebaseSearchResultItem
Making it a boxed type makes it friendly to bindings, as there's some more embedded knowledge about how to deal with this type memory-wise. https://bugzilla.gnome.org/show_bug.cgi?id=737936
-rw-r--r--docs/reference/gdata-sections.txt1
-rw-r--r--gdata/gdata.symbols1
-rw-r--r--gdata/services/freebase/gdata-freebase-search-result.c21
-rw-r--r--gdata/services/freebase/gdata-freebase-search-result.h2
4 files changed, 25 insertions, 0 deletions
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index 2dce5681..b3fdcb03 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -2749,6 +2749,7 @@ gdata_freebase_search_result_item_get_notable_name
gdata_freebase_search_result_item_get_score
<SUBSECTION Standard>
gdata_freebase_search_result_get_type
+gdata_freebase_search_result_item_get_type
GDATA_FREEBASE_SEARCH_RESULT
GDATA_FREEBASE_SEARCH_RESULT_CLASS
GDATA_FREEBASE_SEARCH_RESULT_GET_CLASS
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index 8854a650..7ae3e955 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -1050,6 +1050,7 @@ gdata_freebase_search_result_new
gdata_freebase_search_result_get_num_items
gdata_freebase_search_result_get_total_hits
gdata_freebase_search_result_get_item
+gdata_freebase_search_result_item_get_type
gdata_freebase_search_result_item_get_mid
gdata_freebase_search_result_item_get_id
gdata_freebase_search_result_item_get_name
diff --git a/gdata/services/freebase/gdata-freebase-search-result.c b/gdata/services/freebase/gdata-freebase-search-result.c
index 02f416cd..d2576e7e 100644
--- a/gdata/services/freebase/gdata-freebase-search-result.c
+++ b/gdata/services/freebase/gdata-freebase-search-result.c
@@ -59,6 +59,10 @@ struct _GDataFreebaseSearchResultPrivate {
static void gdata_freebase_search_result_finalize (GObject *self);
static gboolean parse_json (GDataParsable *parsable, JsonReader *reader, gpointer user_data, GError **error);
+static GDataFreebaseSearchResultItem * item_copy (const GDataFreebaseSearchResultItem *item);
+static void item_free (GDataFreebaseSearchResultItem *item);
+
+G_DEFINE_BOXED_TYPE (GDataFreebaseSearchResultItem, gdata_freebase_search_result_item, item_copy, item_free)
G_DEFINE_TYPE (GDataFreebaseSearchResult, gdata_freebase_search_result, GDATA_TYPE_FREEBASE_RESULT)
@@ -92,6 +96,23 @@ item_free (GDataFreebaseSearchResultItem *item)
g_slice_free (GDataFreebaseSearchResultItem, item);
}
+static GDataFreebaseSearchResultItem *
+item_copy (const GDataFreebaseSearchResultItem *item)
+{
+ GDataFreebaseSearchResultItem *copy;
+
+ copy = item_new ();
+ copy->mid = g_strdup (item->mid);
+ copy->id = g_strdup (item->id);
+ copy->name = g_strdup (item->name);
+ copy->lang = g_strdup (item->lang);
+ copy->notable_id = g_strdup (item->notable_id);
+ copy->notable_name = g_strdup (item->notable_name);
+ copy->score = item->score;
+
+ return copy;
+}
+
static void
gdata_freebase_search_result_init (GDataFreebaseSearchResult *self)
{
diff --git a/gdata/services/freebase/gdata-freebase-search-result.h b/gdata/services/freebase/gdata-freebase-search-result.h
index 8173f752..e687caf7 100644
--- a/gdata/services/freebase/gdata-freebase-search-result.h
+++ b/gdata/services/freebase/gdata-freebase-search-result.h
@@ -28,6 +28,7 @@
G_BEGIN_DECLS
+#define GDATA_TYPE_FREEBASE_SEARCH_RESULT_ITEM (gdata_freebase_search_result_item_get_type ())
#define GDATA_TYPE_FREEBASE_SEARCH_RESULT (gdata_freebase_search_result_get_type ())
#define GDATA_FREEBASE_SEARCH_RESULT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GDATA_TYPE_FREEBASE_SEARCH_RESULT, GDataFreebaseSearchResult))
#define GDATA_FREEBASE_SEARCH_RESULT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GDATA_TYPE_FREEBASE_SEARCH_RESULT, GDataFreebaseSearchResultClass))
@@ -76,6 +77,7 @@ typedef struct {
void (*_g_reserved1) (void);
} GDataFreebaseSearchResultClass;
+GType gdata_freebase_search_result_item_get_type (void) G_GNUC_CONST;
GType gdata_freebase_search_result_get_type (void) G_GNUC_CONST;
GDataFreebaseSearchResult *gdata_freebase_search_result_new (void) G_GNUC_WARN_UNUSED_RESULT G_GNUC_MALLOC;