g_array_get_element_size constness & g_array_find function
- From: Paul Eggert <pweggert yahoo de>
- To: "gtk-devel-list gnome org" <gtk-devel-list gnome org>
- Subject: g_array_get_element_size constness & g_array_find function
- Date: Sun, 28 Apr 2013 15:53:53 +0100 (BST)
    
Hi,
I'm Paul. Hope I might be able to contribute to this project. Well, since GList appears to have a bug (as far as I see it: https://bugzilla.gnome.org/show_bug.cgi?id=699137 ) I decided to switch to GArray in the meantime. Since I needed some kind of a find-function that scans through the data structure and checks whether a value exists within it, I decided to write my own function for GArray, since AFAIK, it doesn't exist. You might have had a reason for this, that I can't see from my (unfortunately) quite inexperienced point of view. Anyways, I don't know if this little
 function might come in handy in the next release...
/**
 * Searches for the given value in a GArray and returns the index of the first occurence.
 * @param array GArray to search
 * @param value item to search for
 * @param start position from which to start searching for
 * @return first index with the given value or -1 in case it wasn't found
 */
int g_array_find( GArray *array, gconstpointer value, guint start ) {
    if( value == NULL || array == NULL ) return -1;
    guint element_size = g_array_get_element_size(
 array );
    for( ; start < array->len; ++ start )
        if( !memcmp( array->data + element_size * start, value, element_size ) )
            return start;
    return -1;
}
I'd like to make the first parameter const, but for some reason g_array_get_element_size requires a non-const pointer. This seems very odd to me. Is there a reason for this?
Anyways, if You think the above code is useful, I'd like to have something similar in glib. Maybe a reverse search could be implemented as well. Personally, I don't need it and would just sort the array in a descending order before searching.
Regards,
Paul
PS: Never used doxygen, don't know whether the comment style is correct or not ...
 
[
Date Prev][
Date Next]   [
Thread Prev][
Thread Next]   
[
Thread Index]
[
Date Index]
[
Author Index]