WThing *prev_thing(WThing *first, const WObjDescr *descr) { if(first==NULL) return NULL; return get_prev_thing(first, descr); }
WThing *prev_thing(WThing *first, int filt) { if(first==NULL) return NULL; return get_prev_thing(first->t_prev, filt); }
WThing *last_thing(WThing *parent, const WObjDescr *descr) { WThing *p; if(parent==NULL) return NULL; p=parent->t_children; if(p==NULL) return NULL; p=p->t_prev; if(wobj_is((WObj*)p, descr)) return p; return get_prev_thing(p, descr); }