I think that can be a callback function. I have see this in object oriented programming like gtk+ as an example.
In gtk, some functions depends of other callback functions, I think thats because hierarchy.
An example is:
g_slist_insert_sorted proto list:ptr GSList, data:gpointer, function:GCompareFunc
Now looking to prototype GCompareFunc:
LIBRARY: glib CALLBACK: gint GCompareFunc (gpointer a, gpointer b)
So, when I call g_slist_insert_sorted, I need give other function as a pointer to compare data and return result.
Will be something like:
invoke g_slist_insert_sorted, addr my_list, add my_data, addr my_compare
my_compare proc first:ptr,second:ptr
ret
my_compare endp
It's not necessary to be my_compare function, generally exists more than one function in same library that do the job, so, user can choose whats better to deal with specific data.
From what I have seen these type of functions deals with data transform/sort. So, from this example, a list can store pointers/numbers/strings. The'res no universal function to deal with these data types, so user must choose what data type list will store.