static GsfOutput * gsf_outfile_open_pkg_new_child (GsfOutfile *parent, char const *name, gboolean is_dir, char const *first_property_name, va_list args) { GsfOutfileOpenPkg *child, *open_pkg = GSF_OUTFILE_OPEN_PKG (parent); GsfOutput *sink; if (!open_pkg->is_dir) return NULL; child = (GsfOutfileOpenPkg *)g_object_new_valist ( GSF_OUTFILE_OPEN_PKG_TYPE, first_property_name, args); gsf_output_set_name (GSF_OUTPUT (child), name); gsf_output_set_container (GSF_OUTPUT (child), parent); child->is_dir = is_dir; sink = gsf_outfile_new_child (GSF_OUTFILE (open_pkg->sink), name, is_dir); gsf_outfile_open_pkg_set_sink (child, sink); g_object_unref (sink); open_pkg->children = g_slist_prepend (open_pkg->children, child); g_object_ref (child); return GSF_OUTPUT (child); }
static GsfOutput * gsf_outfile_open_pkg_new_child (GsfOutfile *parent, char const *name, gboolean is_dir, char const *first_property_name, va_list args) { GsfOutfileOpenPkg *child, *open_pkg = GSF_OUTFILE_OPEN_PKG (parent); GsfOutput *sink; if (!open_pkg->is_dir) return NULL; child = (GsfOutfileOpenPkg *)g_object_new_valist ( GSF_OUTFILE_OPEN_PKG_TYPE, first_property_name, args); gsf_output_set_name (GSF_OUTPUT (child), name); gsf_output_set_container (GSF_OUTPUT (child), parent); child->is_dir = is_dir; sink = gsf_outfile_new_child (GSF_OUTFILE (open_pkg->sink), name, is_dir); gsf_outfile_open_pkg_set_sink (child, sink); g_object_unref (sink); /* * Holding a ref here is not ideal. It means we won't release any of the * children until the package is closed. */ open_pkg->children = g_slist_prepend (open_pkg->children, g_object_ref (child)); return GSF_OUTPUT (child); }
static void gsf_outfile_open_pkg_set_property (GObject *object, guint property_id, GValue const *value, GParamSpec *pspec) { GsfOutfileOpenPkg *open_pkg = (GsfOutfileOpenPkg *)object; switch (property_id) { case PROP_SINK: gsf_outfile_open_pkg_set_sink (open_pkg, g_value_get_object (value)); break; case PROP_CONTENT_TYPE: gsf_outfile_open_pkg_set_content_type (open_pkg, g_value_get_string (value)); break; case PROP_IS_DIR: open_pkg->is_dir = g_value_get_boolean (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }