readBlock() and writeBlock() should use pointers of type void* instead of char*, because the type of contained objects is not specified. This would remove the need to reinterpret_cast, which is prone to error.
generic options to allocate a new object corresponding to the datasource contents (allocate a volume with adhoc dimensions, with given borders...), done by Creator
The LowLevelAllocator API should use pointers of type void* instead of char*, because the type of contained objects is not specified. This would remove the need to reinterpret_cast, which is prone to error.