If people are interested I would like to present several possible additions to the Boost library. I will be willing to answer questions about my code but won't be willing to modify my code to boost standards as I simply don't have the time.
They are: A generic hash table based on the SGI hash table with similar semantics from which the standard hash_* classes can be created. The main advantage to the generic table as compared to the hash_* classes is that it allows the key to be part of the value rather than having to use a pair which can be redundant and waste space. An Open Address hash table which uses a vector like object to store its data. The main advantage of this hash table is that it is compact space wise. It also uses a provided vector like object for its storage so that the entire table can easily be written to disk and read back in with out having to marshall the data in any fashion. A special Error handling device, PosibErr<type>, that will make sure that an error is properly handled. It is expected to be used as the return type of the function It will automatically convert to the "normal" return type however if the normal returned type is accessed and there is an "unhandled" error condition it will abort It will also abort if the object is destroyed with an "unhandled" error condition. This includes ignoring the return type of a function returning an error condition. An error condition is handled by simply checking for the presence of an error, calling ignore, or taking ownership of the error. It is better than simply returning an error code because it forces you to handle the error. Although less convent than exceptions it is more effect and easier to debug since it does not unwind the stack. Generic smart points which deep copy semantics where the copy, and destructor functions can be user defined. Enumeration: An efficient way to iterate through elements much like a forward iterator. The at_end method is a convince method as enumerations will return a null pointer or some other sort of special end state when they are at the end. Unlike an iterator iterating through x elements on a list can be done in x function calls while an iterator will require 3*x. function calls. Example of emulator usage const char * word; while ( (word = elements->next()) != 0) { // one function call cout << word << endl; } And an iterator iterator i = container->begin(); iterator end = container->end(); while (i != end) { // comparison, one function call cout << *i << endl; // deref, total of two function calls ++i; // increment, total of three function calls. } Normally all three calls are inline so it doesn't really matter but when the container type is not visible there are not inline and probably even virtual. If anyone is interested in any of these let me know the best way to present them and I will do so. If not no big deal. -- http://kevin.atkinson.dhs.org _______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost