/** * gsf_open_pkg_open_rel_by_id : * @opkg : #GsfInput * @id : target id * @err : optionally %NULL * * New in 1.14.7 * * Open @opkg's relation @id * * Returns: A new GsfInput or %NULL, and sets @err if possible. **/ GsfInput * gsf_open_pkg_open_rel_by_id (GsfInput *opkg, char const *id, GError **err) { GsfOpenPkgRel *rel = NULL; GsfOpenPkgRels *rels = gsf_open_pkg_get_rels (opkg); if (NULL != rels && NULL != (rel = g_hash_table_lookup (rels->by_id, id))) return gsf_open_pkg_open_rel (opkg, rel, err); if (err) *err = g_error_new (gsf_input_error_id(), gsf_open_pkg_error_id (), _("Unable to find part id='%s' for '%s'"), id, gsf_input_name (opkg) ); return NULL; }
/** * gsf_open_pkg_foreach_rel: * @opkg: #GsfInput * @func: (scope call): #GsfOpenPkgIter * @user_data: gpointer * * New in 1.14.9 * * Walks each relationship associated with @opkg and calls @func with @user_data. **/ void gsf_open_pkg_foreach_rel (GsfInput *opkg, GsfOpenPkgIter func, gpointer user_data) { GsfOpenPkgRels *rels = gsf_open_pkg_get_rels (opkg); struct pkg_iter_data dat; if (NULL != rels) { dat.opkg = opkg; dat.func = func; dat.user_data = user_data; g_hash_table_foreach (rels->by_id, (GHFunc)&cb_foreach_rel, &dat); } }
/** * gsf_open_pkg_lookup_rel_by_id: (skip) * @opkg: #GsfInput * @id: identifier. * * New in 1.14.6 * * Finds @opkg's relation with @id * * NOTE: skipping because gsf_open_pkg_rel_get_type() does not return a GType. * * Returns: (transfer none): A #GsfOpenPkgRel or %NULL **/ GsfOpenPkgRel * gsf_open_pkg_lookup_rel_by_id (GsfInput *opkg, char const *id) { GsfOpenPkgRels *rels = gsf_open_pkg_get_rels (opkg); return rels ? g_hash_table_lookup (rels->by_id, id) : NULL; }