I think there is a couple of features that would be nice to have in IOBuffer. If there is no objections I would go ahead and add them.
1) support for reading/writing signed integers. Not sure about the api, maybe the current methods should could be renamed read_uint/add_uint instead? The -1 return value also would not work for the read_ methods. The add_int variants actually work fine for signed ints already, due to the cast to unsigned. sprintf()/sscanf() could be used currently but are quite slow.
2) read_utf8/add_utf8. its not hard to do, quite common and would save one string creation and copy.
3) reading/writing ieee floats. also handled by sprintf/sscanf, but on most systems would reduce to bswap+memcpy
4) little endian support? Admittedly the use cases are narrow for network protocols, but not so much for file formats.
arne