2022-02-13  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Include <string> to avoid compilation errors.

2020-11-07  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.17

	* Apply a similar fix to the move constructor.

	* Release 3.16

	* Fix error in move assignment operator which caused tree
	corruption (thanks to Trevor Hickey for reporting the bug).

2020-10-26  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.15

	* Convert to allocator_traits for all allocator functions, instead
	of calling them directly.

	* Make `parent` throw an exception rather than bailing out with an
	assert.

2019-09-21  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.14

	* Add version of `depth` which takes a predicate function to
	determine whether a particular level in the tree should increase
	the counter or not.

	* Add new `distance` function to determine vertical distance
	between two nodes (like `depth`, but between two nodes, not
	between a node and the top level).

	* Fix bug in move_before which would leave the tree in an
	inconsistent state.

2019-05-28  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.13

	* Add missing 'move_in_below' function.

2019-03-18  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.11

	* Add 'node_in_subtree' function to determine if a node is in a
	given subtree.

	* Update path logic to cover subtrees and handle out-of-range
	errors gracefully.

2019-02-27  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.10

	* Fix a bug in move assignment operator.

2018-04-25  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Add logic to generate a path from an itertor and vice versa.

2018-04-23  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.8.

	* Make fixed-depth iterators start at the first node in a range of
	siblings.

2018-01-30  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Release 3.6.

	* Made various members static.

2016-01-23  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Released 3.4

	* Added move semantics version of prepend_child.

2015-07-13  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Released 3.2

	* Move constructor did the wrong thing with empty trees, fixed.

2015-05-06  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Released 3.1

	* Added asserts in 'subtree' in order to warn users about
	constructing empty subtrees.

2014-12-25  Kasper Peeters  <kasper.peeters@phi-sci.com>

	* Released 3.0

	* Added move constructor and move_out, move_in, move_in_as_nth_child.

2013-09-02  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.9

	* Added 'pre_order_iterator::next_skip_children()'.

2011-08-23  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Brown paper bag release 2.81.

2011-08-23  Kasper Peeters  <kasper@phi-sci.com>

	* Released 2.8

	* License updated.

2010-12-24  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added a number of asserts to trip when passing invalid iterators
	to append_child/prepend_child members.

2010-03-24  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.70

	* Fixed handling of std::allocator to make it more likely to work
	on non-GNU platforms.

2009-12-28  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed the operator= return type and handled self-assignment
	(thanks to Xinlin Cao for the fix).

2009-05-05  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.65

	* Added skip_children(bool), fixed post-increment/decrement
	operators to not refer to 'n' anymore.

2009-04-03  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added a sibling member for quick access to the n-th sibling
	(thanks to Adam Connell for sending the patch).

2009-03-06  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed an old bug in compare_nodes (pointed out to me in 2005 but
	never fixed properly...)

2008-08-28  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.62

	* Changed the behaviour of max_depth() so that it returns -1 for
	an empty tree, instead of bailing out with an error (strictly
	speaking max_depth should be undefined...).

2008-08-26  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.61

	* Fixed a bug in max_depth() which would fail on trees with more
	than one head node (thanks to Marc Noirot for pointing this out).

2008-08-23  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.60

	* Fixed several problems with fixed_depth iterators: iterating
	beyond the top node now disabled and operator-- fixed.

2008-07-25  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Made 'child()' static.

2008-07-20  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.54

	* Changed size() members to return size_t instead of unsigned int.

	* Changed behaviour of operator++ for leaf_iterator so that it can
	be used in situations where new leaves get added during iteration.
	
2008-06-30  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.52

	* Made depth member function static so it can be used independent
	of an actual tree, and added a version with two iterators to
	measure depths relative to a different node.

2008-02-28  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.51

	* Added a top node to leaf_iterators, so that they can be
	instructed to iterate only over the leaves of a given node.

2007-10-19  Kasper Peeters  <kasper@pooh>

	* Released 2.4.

2007-10-18  Kasper Peeters  <kasper@pooh>

	* Added max_depth() members.
	
	* Fixed a bug in begin_fixed() which would fail on 

	       A
              / \
             B   C
            /     \
            D      E
                  / \
                  F G

	  when asked for the first node at depth 3 from 'A' (since it
	  failed to go back up the tree from 'D').

2007-08-21  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.31.

	* Added GPL version 3 licensing as an option.

2007-01-19  Kasper Peeters  <kasper@pooh>

	* Fixed a bug in "replace" which appeared when trying to replace a
	head node (it tried to access the parent).

2006-11-29  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Release 2.3.

	Fixed a bug in number_of_siblings which only counted siblings in
	one direction (thanks to Fanzhe Cui for pointing this out).

2006-08-20  Kasper Peeters  <kasper@pooh>

	* Released 2.2.

	* Added operator== and operator!= for fixed_depth_iterator.

2006-08-07  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 2.1.

	* Added leaf iterators, code contributed by Peter Wienemann.

	* Fixed a bug in is_valid (thanks to Antonio Morillas). 1.131.

2006-07-19  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed bugs in move_before and move_after which would show up
	when the node was already in the right place. 1.130.

2006-03-02  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added the "wrap" member function.

2006-03-01  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added a simple queue-based breadth-first iterator.

2006-01-31  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed move_before to work when the target is a sibling_iterator
	pointing to the end of a range of siblings.

2005-11-20  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added move_after, which for some mysterious reason was
	missing. Thanks to Dennis Jones for pointing this out.

	* Fixed a bug in operator++ for post_order iterators
	(skip_children could remain set if no next sibling present).
	Thanks to Ohad for pointing out the bug.

2005-10-12  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed a bug in the 'sort' member which takes a Comparator
	function object (thanks to Robin Taylor for the patch).

2005-09-14  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Doxygen documentation added, plus a new web page.

2004-11-05  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed a bug which shows up when inserting nodes at the top of
	the tree (thanks to Matthias Bernt for pointing me to this one).

2004-07-21  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixed kp::destructor -> destructor.

	* Moved body of 'compare_nodes::operator()' into the class
	declaration in order to satisfy buggy Borland compilers (and stop
	regular email messages about this problem).

	* Fixed a completely buggy number_of_siblings() (thanks to Caleb
	Epstein for the patch).

2004-02-04  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 1.106

	* Fixed a bug in insert(sibling_iterator, const T&) (thanks to
	Maxim Yegorushkin for the patch).

2003-11-21  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Put some things in a namespace to avoid clashes with other
	libraries.

2003-10-13  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 1.102.

	* Fixed return type of postincrement/decrement operators (thanks
	to Yevhen Tymokhin for pointing this out).

2003-09-18  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Fixes for standard compliance, as required to compile with 
	gcc 3.4 and later.

2003-08-12  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Added 'empty' member (patch by Michael Vogt).

2003-08-01    <kasper@whiteroom2.localdomain>

	* Released 1.95

	* Fixed two bugs in sort (which were corrupting the tree); thanks
	to Michael Vogt for informing me about the problem.

2003-07-17    <kasper@whiteroom2.localdomain>

	* Added a hack to enable compilation with STLport.

2003-07-11    <kasper@whiteroom2.localdomain>

	* Released 1.90

	* Added postfix increment and decrement operators; thanks to
	Claudio Andreatta for sending the patch.

	* Fixed a bug in reparent(iter pos, iter from). Thanks to Claudio
	Andreatta for fixing this.

2003-06-25  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Many bug fixes for fixed depth iterators, thanks to Ruben
	Niederhagen for pointing out several problems (a few still exist,
	see the 'TODO' part of tree.hh).

2003-04-17  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 1.85

	* Corrected return type of operator++ and friends.

	* Added preliminary support for 'fixed_depth_iterator' to iterate
	over children at a given level. Not quite finished yet, sorry.

2003-03-24  Kasper Peeters  <kasper.peeters@aei.mpg.de>

	* Released 1.83

	* Changed return type of 'child' member function to be a sibling
	iterator instead of a reference to the actual node (sorry for the
	incompatibility with previous versions). Change also propagated to
	tree_msvc.hh.
	
2003-02-07    <kasper@whiteroom2.localdomain>

	* Released 1.80

	* Fixed another bug in sort (thanks to Tony Cook for fixing this
	bug).

2003-01-29  Kasper Peeters  <peekas@xeon25.aei-potsdam.mpg.de>

	* Released 1.78.

	* Fixed a bug in sort, which resulted in a corrupt tree (thanks to
	Michael Vogt for fixing this bug).

2003-01-07  Kasper Peeters  <peekas@xeon25.aei-potsdam.mpg.de>

	* Released 1.75 and msvc version 1.72
	
	* Fixed a wrongly specialised 'insert' method for
	sibling_iterators (thanks to Tony Cook for pointing this out).

2002-11-15  Kasper Peeters  <peekas@xeon25.aei-potsdam.mpg.de>

        * Released 1.72
	
	* Fixed a bug in 'index' when called on nodes at the top level of
	the tree (thanks to David Zajic for the bug report). Be warned
	that the top level is a bit special at the moment; the end
	sibling_iterator is ill-defined for siblings there (to be fixed in
	a future version).

2002-10-31  Kasper Peeters  <peekas@sshserv.aei-potsdam.mpg.de>

	* Released 1.70.

	* Finished the merge algorithm, updated the documentation with
	examples about its use, and added a test-case to the test_tree.cc
	program.

	* Fixed a bug in pre_order_iterator::operator--.

2002-10-20  Kasper Peeters  <peekas@xeon24.aei-potsdam.mpg.de>

	* Released 1.66.

2002-10-15  Kasper Peeters  <kasper@whiteroom.nikhef.nl>

	* Code for post_order_iterator implemented.

2002-10-13  Kasper Peeters  <peekas@xeon24.aei-potsdam.mpg.de>

	* Rewrote large parts of the code to allow for multiple iterator
	types, such as pre_order_iterator (which was the previous iterator
	type), post_order_iterator and so on. This required small changes
	to the interface, the most visible one being

	   - insert(iterator, iterator) for the insertion of a subtree
	     is now called insert_subtree(iterator, iterator).

	Apologies if this breaks your code.

2002-10-11  Kasper Peeters  <peekas@xeon24.aei-potsdam.mpg.de>

	* Removed '(void)' type declarations in favour of the C++ standard
	empty brackets '()'.

2002-10-10  Kasper Peeters  <peekas@xeon24.aei-potsdam.mpg.de>

	* Added 'index' in response to a discussion on the Boost mailing
	list. 

2002-10-03  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* reparent(iterator,sibling_iterator,sibling_iterator) now accepts
	an empty range, in which case it does nothing (request by Jos de
	Laender).

	* Fixed a bug in the iterator(sibling_iterator) constructor
	(thanks to Jos de Laender for pointing this out).

2002-09-04  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* Fixed a bug in insert_after (thanks to Carl Blanchette for the
	patch).

2002-08-29  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* The problem in test_tree of the previous item was actually do to
	tree::end(iterator) returning the end of the tree, not the end of
	the current sibling list. Fixed now, released 1.55.

2002-08-26  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* Released 1.54.

	* Printing a single-node tree in test_tree would result in a
	segfault; more robust now (thanks to Yutaka Sato for the bug
	report).
	
2002-05-07  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* Fixed a bug in "sort" which would remove duplicate nodes altogether.

2002-03-24  Kasper Peeters  <kasper@whiteroom.nikhef.nl>

	* Added "append_child" without child argument, to add empty child
	node.

2002-05-04  Kasper Peeters  <K.Peeters@damtp.cam.ac.uk>

	* Released 1.45.

	* Removed restriction of having only a single node at the top of
	the tree (associated with this, the top nodes should now be inserted
	with "insert", not with "append_child").

	* Fixes for ISO compatibility (now works with gcc-3.1). Thanks to
	Olivier Verdier.

