Copy diagram from scrap paper into code for clarity.
This commit is contained in:
parent
1273d87df9
commit
7ee31ad36b
1 changed files with 19 additions and 0 deletions
19
src/Db.c
19
src/Db.c
|
@ -40,6 +40,25 @@ struct Db
|
||||||
size_t maxCache;
|
size_t maxCache;
|
||||||
HashMap *cache;
|
HashMap *cache;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The cache uses a double linked list (see DbRef
|
||||||
|
* below) to know which objects are most and least
|
||||||
|
* recently used. The following diagram helps me
|
||||||
|
* know what way all the pointers go, because it
|
||||||
|
* can get very confusing sometimes. For example,
|
||||||
|
* there's nothing stopping "next" from pointing to
|
||||||
|
* least recent, and "prev" from pointing to most
|
||||||
|
* recent, so hopefully this clarifies the pointer
|
||||||
|
* terminology used when dealing with the linked
|
||||||
|
* list:
|
||||||
|
*
|
||||||
|
* mostRecent leastRecent
|
||||||
|
* | prev prev | prev
|
||||||
|
* +---+ ---> +---+ ---> +---+ ---> NULL
|
||||||
|
* |ref| |ref| |ref|
|
||||||
|
* NULL <--- +---+ <--- +---+ <--- +---+
|
||||||
|
* next next next
|
||||||
|
*/
|
||||||
DbRef *mostRecent;
|
DbRef *mostRecent;
|
||||||
DbRef *leastRecent;
|
DbRef *leastRecent;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue