+/* create an anonymous handle. useful for substructures like
+ * fixarray/flexarray */
+Id repodata_new_handle(Repodata *data);
+
+/* basic types: void, num, string, Id */
+void repodata_set_void(Repodata *data, Id solvid, Id keyname);
+void repodata_set_num(Repodata *data, Id solvid, Id keyname, unsigned long long num);
+void repodata_set_id(Repodata *data, Id solvid, Id keyname, Id id);
+void repodata_set_str(Repodata *data, Id solvid, Id keyname, const char *str);
+void repodata_set_binary(Repodata *data, Id solvid, Id keyname, void *buf, int len);
+/* create id from string, then set_id */
+void repodata_set_poolstr(Repodata *data, Id solvid, Id keyname, const char *str);
+
+/* set numeric constant */
+void repodata_set_constant(Repodata *data, Id solvid, Id keyname, unsigned int constant);
+
+/* set Id constant */
+void repodata_set_constantid(Repodata *data, Id solvid, Id keyname, Id id);
+
+/* checksum */
+void repodata_set_bin_checksum(Repodata *data, Id solvid, Id keyname, Id type,
+ const unsigned char *buf);
+void repodata_set_checksum(Repodata *data, Id solvid, Id keyname, Id type,
+ const char *str);
+void repodata_set_idarray(Repodata *data, Id solvid, Id keyname, Queue *q);
+
+/* directory (for package file list) */
+void repodata_add_dirnumnum(Repodata *data, Id solvid, Id keyname, Id dir, Id num, Id num2);
+void repodata_add_dirstr(Repodata *data, Id solvid, Id keyname, Id dir, const char *str);
+void repodata_free_dircache(Repodata *data);
+
+
+/* Arrays */
+void repodata_add_idarray(Repodata *data, Id solvid, Id keyname, Id id);
+void repodata_add_poolstr_array(Repodata *data, Id solvid, Id keyname, const char *str);
+void repodata_add_fixarray(Repodata *data, Id solvid, Id keyname, Id ghandle);
+void repodata_add_flexarray(Repodata *data, Id solvid, Id keyname, Id ghandle);
+
+/* generic */
+void repodata_set_kv(Repodata *data, Id solvid, Id keyname, Id keytype, struct _KeyValue *kv);
+void repodata_unset(Repodata *data, Id solvid, Id keyname);
+void repodata_unset_uninternalized(Repodata *data, Id solvid, Id keyname);
+
+/*
+ merge/swap attributes from one solvable to another
+ works only if the data is not yet internalized
+*/
+void repodata_merge_attrs(Repodata *data, Id dest, Id src);
+void repodata_merge_some_attrs(Repodata *data, Id dest, Id src, Map *keyidmap, int overwrite);
+void repodata_swap_attrs(Repodata *data, Id dest, Id src);
+
+Repodata *repodata_create_stubs(Repodata *data);
+
+/*
+ * load all paged data, used to speed up copying in repo_rpmdb
+ */
+void repodata_disable_paging(Repodata *data);
+
+/* helper functions */
+Id repodata_globalize_id(Repodata *data, Id id, int create);
+Id repodata_localize_id(Repodata *data, Id id, int create);
+Id repodata_translate_id(Repodata *data, Repodata *fromdata, Id id, int create);
+