int listObserverAttach(LIST_OBSERVER_T *observer, LIST_T *list) { int cc; if (! list->allowObservers) { listerrno = (int) LIST_ERR_NOOBSVR; return -1; } cc = listInsertEntryBefore(list->observers, (LIST_ENTRY_T *)list->observers, (LIST_ENTRY_T *)observer); if (cc < 0) return cc; observer->list = list; return 0; }
/* listInsertEntryAtBack() * * before: * * L->1->2->3 * * after: * * L->1->2->3->4 * */ int listInsertEntryAtBack(LIST_T * list, LIST_ENTRY_T *entry) { return listInsertEntryBefore(list, (LIST_ENTRY_T *)list, entry); }
/* listInsertEntryAtFront() * * Push items in from of the list: * * before: * * L->3->2->1 * * after: * * L->4->3->2->1 * */ int listInsertEntryAtFront(LIST_T * list, LIST_ENTRY_T *entry) { return listInsertEntryBefore(list, list->forw, entry); }
int listInsertEntryAfter(LIST_T * list, LIST_ENTRY_T *pred, LIST_ENTRY_T *entry) { return listInsertEntryBefore(list, pred->forw, entry); }