20 #include "key_iterator.h"
27 return rev->obstates.find(ob) != rev->obstates.end();
37 std::map<xorn_object_t, obstate *>::const_iterator i
38 = rev->obstates.find(ob);
40 if (i == rev->obstates.end())
43 return i->second->type;
67 std::map<xorn_object_t, obstate *>::const_iterator i
68 = rev->obstates.find(ob);
70 if (i == rev->obstates.end() || i->second->type != type)
73 return i->second->data;
95 unsigned int *position_return)
97 std::map<xorn_object_t, xorn_object_t>::const_iterator i
98 = rev->parent.find(ob);
99 if (i == rev->parent.end())
102 if (attached_to_return != NULL)
103 *attached_to_return = i->second;
105 if (position_return != NULL) {
106 std::vector<xorn_object_t>
const &children
107 = rev->children[i->second];
108 *position_return = find(children.begin(),
109 children.end(), ob) - children.begin();
117 std::map<xorn_object_t, std::vector<xorn_object_t> >::const_iterator i
118 = rev->children.find(attached_to);
120 if (i == rev->children.end())
123 for (std::vector<xorn_object_t>::const_iterator j
124 = i->second.begin(); j != i->second.end(); ++j) {
125 (*objects_return)[(*count_return)++] = *j;
126 dump_children(rev, *j, objects_return, count_return);
156 if (*objects_return == NULL && !rev->obstates.empty())
159 dump_children(rev, NULL, objects_return, count_return);
180 if (ob != NULL && rev->obstates.find(ob) == rev->obstates.end())
182 std::map<xorn_object_t, std::vector<xorn_object_t> >::const_iterator i
183 = rev->children.find(ob);
184 if (objects_return == NULL) {
186 i == rev->children.end() ? 0 : i->second.size();
189 if (i == rev->children.end()) {
190 *objects_return = NULL;
198 if (*objects_return == NULL && !i->second.empty())
201 for (std::vector<xorn_object_t>::const_iterator j
202 = i->second.begin(); j != i->second.end(); ++j)
203 (*objects_return)[(*count_return)++] = *j;
220 std::min(rev->obstates.size(),
223 if (*objects_return == NULL && !rev->obstates.empty() && !sel->empty())
227 iterate_keys(rev->obstates.begin()),
228 iterate_keys(rev->obstates.end()),
229 sel->begin(), sel->end(), *objects_return);
231 *count_return = ptr - *objects_return;
253 if (*objects_return == NULL && !to_rev->obstates.empty())
257 iterate_keys(to_rev->obstates.begin()),
258 iterate_keys(to_rev->obstates.end()),
259 iterate_keys(from_rev->obstates.begin()),
260 iterate_keys(from_rev->obstates.end()), *objects_return);
262 *count_return = ptr - *objects_return;
284 if (*objects_return == NULL && !from_rev->obstates.empty())
288 iterate_keys(from_rev->obstates.begin()),
289 iterate_keys(from_rev->obstates.end()),
290 iterate_keys(to_rev->obstates.begin()),
291 iterate_keys(to_rev->obstates.end()), *objects_return);
293 *count_return = ptr - *objects_return;
312 std::min(from_rev->obstates.size(),
315 if (*objects_return == NULL && !from_rev->obstates.empty()
316 && !to_rev->obstates.empty())
319 std::map<xorn_object_t, obstate *>::const_iterator i
320 = from_rev->obstates.begin();
321 std::map<xorn_object_t, obstate *>::const_iterator j
322 = to_rev->obstates.begin();
324 while (i != from_rev->obstates.end() && j != to_rev->obstates.end())
325 if (i->first < j->first)
327 else if (i->first > j->first)
330 if (i->second != j->second)
331 (*objects_return)[(*count_return)++] =
int xorn_get_objects_attached_to(xorn_revision_t rev, xorn_object_t ob, xorn_object_t **objects_return, size_t *count_return)
Return a list of objects in a revision which are attached to a certain object.
bool xorn_object_exists_in_revision(xorn_revision_t rev, xorn_object_t ob)
Return whether an object exists in a revision.
struct xorn_revision * xorn_revision_t
Opaque type representing the contents of a file.
int xorn_get_objects(xorn_revision_t rev, xorn_object_t **objects_return, size_t *count_return)
Return a list of all objects in a revision.
void const * xorn_get_object_data(xorn_revision_t rev, xorn_object_t ob, xorn_obtype_t type)
Get a pointer to an object's data in a given revision.
int xorn_get_object_location(xorn_revision_t rev, xorn_object_t ob, xorn_object_t *attached_to_return, unsigned int *position_return)
Get the location of an object in the object structure.
int xorn_get_added_objects(xorn_revision_t from_rev, xorn_revision_t to_rev, xorn_object_t **objects_return, size_t *count_return)
Return a list of objects which are in a revision but not in another.
struct xorn_selection * xorn_selection_t
Opaque type representing the identity of a set of objects.
int xorn_get_modified_objects(xorn_revision_t from_rev, xorn_revision_t to_rev, xorn_object_t **objects_return, size_t *count_return)
Return a list of objects which exist in two revisions but have different type or data.
int xorn_get_removed_objects(xorn_revision_t from_rev, xorn_revision_t to_rev, xorn_object_t **objects_return, size_t *count_return)
Return a list of objects which are in a revision but not in another.
xorn_obtype_t xorn_get_object_type(xorn_revision_t rev, xorn_object_t ob)
Get the type of an object in a given revision.
int xorn_get_selected_objects(xorn_revision_t rev, xorn_selection_t sel, xorn_object_t **objects_return, size_t *count_return)
Return a list of objects which are in a revision as well as in a selection.
struct xorn_object * xorn_object_t
Opaque type representing the identity of an object.
xorn_obtype_t
Object types, each corresponding to a data structure.