|
Boost : |
From: Justin Gottschlich (jgottschlich_at_[hidden])
Date: 2005-02-22 03:32:59
Dear Boost library members -
My name is Justin Gottschlich and have just recently joined the boost
mailing list. Since this is my first post, I would first like to apologize
in advance for any e-mail inequities I manage to include in this e-mail.
I'm e-mailing is to ask if there may be interest in a generic tree container
for addition to Boost. I have created four generic tree libraries which I am
currently using in my online game (Nodeka). Additionally, my former company
began using them in a rather small scope in 2002 and has since requested
additional use of the libraries throughout their product (QuarkXPress) and
my current company is now showing interest in using them and will begin
using them within the next couple weeks (Raytheon Company).
Due to the increased interest of the tree libraries, I am now bringing them
to your attention in case you feel they may be of interest for Boost library
inclusion.
The four containers I have written are:
core::tree - creates a generic tree that follows std::set functionality per
tree level
core::multitree - creates a generic tree that follows std::multiset
functionality per tree level
core::tree_pair - creates a key/value generic tree that follows std::map
functionality per tree level
core::multitree_pair - creates a key/value generic tree that follows
std::multimap functionality per tree level
In addition, I have four iterators for each tree container. The containers
are written in an extremely general manner so while they have ordered
behavior through "insert" functionality (like set and map), they can also
achieve unordered element behavior through "push_back" and "push_front"
behavior. The reason for this is so the generic tree containers can be used
as a basic framework to build additional, algorithm or purpose driven
behavior (nested sets, compiler based control trees). The containers are by
no means up to "standards" quality - so much work would be needed there. =)
I have written two articles on my tree containers (one published on
gamedev.net) and the second article in the process for publication on
gamedev.net that is currently being reviewed. I have posted both articles on
my site for review (if you're interested in reading them):
http://nodeka.com/TreePart1.pdf
http://nodeka.com/TreePart2.pdf
The second article really explains the design thoughts behind the tree
containers. The first article simple shows how I've seen C++ programmers
build trees using maps and why that's bad. =) If you are interested in the
reasoning of my design for the trees, I would recommend reading the second
article (http://nodeka.com/TreePart2.pdf).
The current header source code can be seen here:
http://nodeka.com/tree.h
http://nodeka.com/multitree.h
The core::tree_pair and core::multitree_pair are undergoing some changes so
I haven't posted them just yet.
If you feel generic tree containers are not suitable for Boost, I will
completely understand and my feelings won't be hurt by your honesty. =)
Thanks for your time and consideration,
Justin Gottschlich ( <mailto:justin_at_[hidden]> justin_at_[hidden],
jgottschlich_at_[hidden])
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk