From a365b27b2186dfd7b3e7f9c10dac5144addd290e Mon Sep 17 00:00:00 2001 From: Thomas White Date: Sun, 14 Dec 2014 15:15:14 +0100 Subject: hdfsee: Select the correct event at the start --- libcrystfel/src/events.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'libcrystfel/src/events.c') diff --git a/libcrystfel/src/events.c b/libcrystfel/src/events.c index d431a851..93d67a68 100644 --- a/libcrystfel/src/events.c +++ b/libcrystfel/src/events.c @@ -206,6 +206,46 @@ struct event_list *copy_event_list(struct event_list *el) } +static int events_equal(struct event *ev1, struct event *ev2) +{ + int i; + + if ( ev1->path_length != ev2->path_length ) return 0; + if ( ev1->dim_length != ev2->dim_length ) return 0; + + for ( i=0; ipath_length; i++ ) { + if ( strcmp(ev1->path_entries[i], ev2->path_entries[i]) != 0 ) { + return 0; + } + } + + for ( i=0; idim_length; i++ ) { + if ( ev1->dim_entries[i] != ev2->dim_entries[i] ) return 0; + } + + return 1; +} + + +/** + * find_event: + * @ev: An event structure + * @el: An event list + * + * Returns: the indexing into @el of the event matching @ev, of el->num_events + * if no such event is found. + **/ +int find_event(struct event *ev, struct event_list *el) +{ + int i; + + for ( i=0; inum_events; i++ ) { + if ( events_equal(ev, el->events[i]) ) return i; + } + + return i; +} + void free_event(struct event *ev) { -- cgit v1.2.3