ChangeLog.txt - Change log of Toolbox. 081001: Benjamin Han Created. 090301: Benjamin Han Version 1.32. 092801: Benjamin Han Version 1.33. 120601: Benjamin Han Version 1.34. 120601: Version 1.34: 1. Split Tree<> into Tree<> (ordered tree, i.e., the sibling ordering is significant) and UTree<> (unordered tree). 2. Added Trie<> (trie.hpp): an unordered prefix tree (trie) template. 3. Added CFG<> (cfg.hpp): a context-free grammar template which uses a trie to store the RHS of rules - faster and consumes less memory, while enables prefix searching and rules removal. The template can be instantiated into all kinds of CFG, e.g., PCFG, unification-based CFG, etc. 4. Added move() for both Tree<> and UTree<>: moving a subtree within a tree; added isLastD(), front() and back() in _TreeIteratorBase<>. 5. Bugfixes: strange g++ behavior in _TreeNode<>::DMap<>::erase(); const/non-const conversion of _TreeDIterator<>, etc. 093001: Minor fix of "make tar". 092801: Version 1.33: 1. Added mixed tree Isomorphism algorithm as TIsomorphismMixed in treeAlgorithm.hpp. 2. New methods in _TreeIteratorBase<> and _TreePathIterator<>. 3. Bugs fixed: operator--() in both _TreePathIterator<> and _GPathIterator<> failed to update the internal Path::const_iterator. 4. Added tests for _TreePathIterator<> in treeTst.cpp. 090301: Version 1.32: 1. Completed GIsomorphism<> and SubGIsomorphism<> in graphAlgorithm.hpp. 2. Revised the code to compile under g++ version 3.0 with -Wall -pedantic without any warning. 3. Revised all agendas in graph*.* and tree*.*: faster and use less memory. 4. Renamed the Equivalence* and LexicographicalCompareRelaxed classes in treeAlgorithm.hpp to TIsomorphism* and TLexicographicalCompareRelaxed. 082001: Fixed the init ordering problem of the static TokenDict<> inside the TokenID<> by embedding the static TokenDict<> inside a method. But a workaround is still needed by inheriting TokenDict<> from _MetaDict<> (see tokDict.hpp). 081601: 1. Abandoned the idea of using stamps in traversing a graph (in graph*.*); now each iterator with agenda keeps its own history so we can have embedding traversals. 2. Revised the non-standard fstream-related code in vFile.*. 3. Split the build targets into two in Makefile: now you can build only the object files. 4. Building using optimizations. 081001: Version 1.3: 1. Added graph* for a generic and STL-friendly graph ( to be specific it's a generic vertex-indexed, directed and single-edge graph, the internal representation is an adjacency list); the testing programs are also added. Note graphAlgorithm is yet completed at this time. 2. Several bug fixes in tree* code, especially in the use of operator-- in tree agendas. 3. Efficiency enhancement of various code, e.g., _PathIterator<> no longer copies and keeps a local copy of the path, etc. 4. Several name changes to the tree API so we have a more consistent API for trees and graphs: a. Now all iterators should be declared through Tree<>, i.e., you should convert TreeDIterator(int,less ) tdi; TreeConstIterator(int,PreorderAgenda,less ) tpi; to Tree >::DIterator tdi; Tree >::ConstPreIterator tpi; See tree.hpp for details. b. Changed dBegin() and dEnd() in _TreeIteratorBase<> to begin() and end(). c. Changed dSize() in _TreeIteratorBase<> to size(). d. Changed dFindFirst() and dFindNext() in _TreeIteratorBase<> to find() and findNext(). e. Changed all identifiers of Homomorpic* to Equivalence* in treeAlgorithm.hpp - Homomorphic* is a misnomer. 5. Changed all .cc files to .cpp files, and all .h files to .hpp files; also changed the other related files for this.