Reimplement Document::Internal
commit747ba3ef354a2b0180b18f0d878e1add7697ae5b
authorOlly Betts <olly@survex.com>
Thu, 21 Sep 2017 10:50:11 +0000 (21 22:50 +1200)
committerOlly Betts <olly@survex.com>
Thu, 21 Sep 2017 10:50:11 +0000 (21 22:50 +1200)
tree9089415edcd286684db8fea66c5e9e067a8d2269
parent26de4cf06670323624ebfdc8f2b0be25f55f1258
Reimplement Document::Internal

TermIterator from a Document now keeps a reference to the document
(new regression testcase orphaneddoctermitor1).

Term positions are now stored in a custom vector implementation which
uses no external storage when small ("Small Vector Optimisation") and
eliminates a lot of copying that was previously happening (thanks to
a combination of C++11 move semantics and copy-on-write).
44 files changed:
xapian-core/api/Makefile.mk
xapian-core/api/documentterm.h [deleted file]
xapian-core/api/documenttermlist.h [new file with mode: 0644]
xapian-core/api/documentvaluelist.cc
xapian-core/api/documentvaluelist.h
xapian-core/api/maptermlist.h [deleted file]
xapian-core/api/omdocument.cc
xapian-core/api/postingsource.cc
xapian-core/api/smallvector.h
xapian-core/api/terminfo.cc [new file with mode: 0644]
xapian-core/api/terminfo.h [new file with mode: 0644]
xapian-core/api/termlist.cc
xapian-core/api/termlist.h
xapian-core/backends/Makefile.mk
xapian-core/backends/document.h [deleted file]
xapian-core/backends/documentinternal.cc [new file with mode: 0644]
xapian-core/backends/documentinternal.h [new file with mode: 0644]
xapian-core/backends/glass/glass_database.cc
xapian-core/backends/glass/glass_document.cc [copied from xapian-core/api/termlist.cc with 56% similarity]
xapian-core/backends/glass/glass_document.h
xapian-core/backends/glass/glass_inverter.cc
xapian-core/backends/glass/glass_inverter.h
xapian-core/backends/glass/glass_positionlist.cc
xapian-core/backends/glass/glass_positionlist.h
xapian-core/backends/glass/glass_values.cc
xapian-core/backends/inmemory/Makefile.mk
xapian-core/backends/inmemory/inmemory_database.cc
xapian-core/backends/inmemory/inmemory_database.h
xapian-core/backends/inmemory/inmemory_document.cc
xapian-core/backends/inmemory/inmemory_document.h
xapian-core/backends/inmemory/inmemory_positionlist.cc
xapian-core/backends/inmemory/inmemory_positionlist.h
xapian-core/backends/remote/remote-database.cc
xapian-core/backends/remote/remote-document.cc
xapian-core/backends/remote/remote-document.h
xapian-core/backends/slowvaluelist.cc
xapian-core/common/bitstream.cc
xapian-core/common/bitstream.h
xapian-core/include/xapian/document.h
xapian-core/matcher/collapser.h
xapian-core/matcher/valuestreamdocument.cc
xapian-core/matcher/valuestreamdocument.h
xapian-core/tests/api_none.cc
xapian-core/tests/api_replacedoc.cc