+/* copy */
+
+GST_API
+GstMiniObject * gst_mini_object_copy (const GstMiniObject *mini_object) G_GNUC_MALLOC G_GNUC_WARN_UNUSED_RESULT;
+
+
+GST_API
+void gst_mini_object_set_qdata (GstMiniObject *object, GQuark quark,
+ gpointer data, GDestroyNotify destroy);
+GST_API
+gpointer gst_mini_object_get_qdata (GstMiniObject *object, GQuark quark);
+
+GST_API
+gpointer gst_mini_object_steal_qdata (GstMiniObject *object, GQuark quark);
+
+GST_API
+void gst_mini_object_add_parent (GstMiniObject *object, GstMiniObject *parent);
+GST_API
+void gst_mini_object_remove_parent (GstMiniObject *object, GstMiniObject *parent);
+
+GST_API
+gboolean gst_mini_object_replace (GstMiniObject **olddata, GstMiniObject *newdata);
+
+GST_API
+gboolean gst_mini_object_take (GstMiniObject **olddata, GstMiniObject *newdata);
+
+GST_API
+GstMiniObject * gst_mini_object_steal (GstMiniObject **olddata) G_GNUC_WARN_UNUSED_RESULT;
+
+/**
+ * GST_DEFINE_MINI_OBJECT_TYPE:
+ * @TypeName: name of the new type in CamelCase
+ * @type_name: name of the new type
+ *
+ * Define a new mini-object type with the given name
+ */
+#define GST_DEFINE_MINI_OBJECT_TYPE(TypeName,type_name) \
+ G_DEFINE_BOXED_TYPE(TypeName,type_name, \
+ (GBoxedCopyFunc) gst_mini_object_ref, \
+ (GBoxedFreeFunc) gst_mini_object_unref)