1 /*- 2 * lstIndex.c -- 3 * Function to return the index of a datum in a Lst. 4 * 5 * Copyright (c) 1988 by the Regents of the University of California 6 * 7 * Permission to use, copy, modify, and distribute this 8 * software and its documentation for any purpose and without 9 * fee is hereby granted, provided that the above copyright 10 * notice appears in all copies. The University of California nor 11 * Adam de Boor makes any representations about the suitability of this 12 * software for any purpose. It is provided "as is" without 13 * express or implied warranty. 14 * 15 * 16 */ 17 #ifndef lint 18 static char *rcsid = 19 "$Id: lstIndex.c,v 1.2 88/11/17 20:52:54 adam Exp $ SPRITE (Berkeley)"; 20 #endif lint 21 22 #include "lstInt.h" 23 24 /*- 25 *----------------------------------------------------------------------- 26 * Lst_Index -- 27 * Return the index of a datum in a Lst. Indices start at 0. 28 * 29 * Results: 30 * Returns -1 if the datum isn't in the Lst, or the index of 31 * the datum if it is. 32 * 33 * Side Effects: 34 * None. 35 * 36 *----------------------------------------------------------------------- 37 */ 38 int 39 Lst_Index(l, d) 40 Lst l; 41 ClientData d; 42 { 43 List list = (List)l; 44 register ListNode lNode; 45 register int index; 46 47 lNode = list->firstPtr; 48 49 if (lNode == NilListNode) { 50 return(-1); 51 } 52 53 index = 0; 54 55 do { 56 if (lNode->datum == d) { 57 return(index); 58 } else { 59 lNode = lNode->nextPtr; 60 index += 1; 61 } 62 } while (lNode != NilListNode && lNode != list->firstPtr); 63 return(-1); 64 } 65