LT.c
From Organic Design wiki
Revision as of 23:29, 8 November 2006 by Nad (talk | contribs) (listTraverse function from listSpace.c)
// Start at subject listItem and traverse the key as an association to a new listItem // - key is also a listItem reference and its binary address is used as the traversal path // - subject and key (all list-item references are ints starting at item 0) // - if key is 0 the subject is returned unchanged, key 1 and 2 are the two single-iteration traversals item listTraverse(item subject, item key) { if (key++) { int i,j; for (i=1; i<=key>>1; i<<=1) subject = space[j=subject+(subject<<1)+(key&i?1:0)]?space[j]:(space[j]=listInsert()); } return subject; }