ADT: Separate some list manipulation API into ilist_base, NFC
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 22 Aug 2016 22:21:07 +0000 (22:21 +0000)
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>
Mon, 22 Aug 2016 22:21:07 +0000 (22:21 +0000)
commit9f5c83b914ff8d7094fef580cf86ecee784ad008
treea5c1602d914d37877e2aa697ba5f50eb30bf425e
parent49a8ebd7c1f73b9da4e2d85795e97f7928aff26b
ADT: Separate some list manipulation API into ilist_base, NFC

Separate algorithms in iplist<T> that don't depend on T into ilist_base,
and unit test them.

While I was adding unit tests for these algorithms anyway, I also added
unit tests for ilist_node_base and ilist_sentinel<T>.

To make the algorithms and unit tests easier to write, I also did the
following minor changes as a drive-by:
- encapsulate Prev/Next in ilist_node_base to so that algorithms are
  easier to read, and
- update ilist_node_access API to take nodes by reference.

There should be no real functionality change here.

llvm-svn: 279484
llvm/include/llvm/ADT/ilist.h
llvm/include/llvm/ADT/ilist_node.h
llvm/unittests/ADT/CMakeLists.txt
llvm/unittests/ADT/IListBaseTest.cpp [new file with mode: 0644]
llvm/unittests/ADT/IListNodeBaseTest.cpp [new file with mode: 0644]
llvm/unittests/ADT/IListSentinelTest.cpp [new file with mode: 0644]