A problem with this class is that Attr_iter objects cannot be dereferenced to return attributes. Instead they must be passed to methods which require that you have access to the AttrTable object into which they point.03/09/04 jhrg
dods_byte Byte::value()
. Sure you have to downcast from BaseType to Byte in order to use it, but you have to figure out you have a Byte to use Byte::buf2val() anyway, so what's the big deal? Having a method that returns the value would simplify code that reads from data sets to extract meta data (like lat/lon corner points, et c.). These methods that use the btp_stack to keep track of the path from the top of a dataset to a particular variable can be rewritten to use the parent field instead.
All the methods that use names to identify variables should have counterparts that take BaseType pointers.
We need to rethink the ancillary file/directory stuff. I don't think it's ever been used...
Along the same lines as the previous item, consider removing the Part enum and adopting the convention that the first variable added is the array and any subsequent variables are maps.
Change the entry locking scheme to distinguish between entries accessed for reading and for writing.
Test in MT software. Is the entry locking scheme good enough? The current software throws an exception if there's an attempt to modify an entry that is locked by another thread. Maybe it should block instead? Maybe we should provide a tests to see if an update would block (one that returns right away and one that blocks). Note: Rob Morris added tests for MT-safety. 02/06/03 jhrg
Add an isEmpty() method which returns true if the Sequence is empty. This should work before and after calling deserialize().