openmicroscopy/bioformats — pull request #1274 by rleigh-dundee (2014-08-16 16:43:50+00:00)
Title: cpp: Update Boost.Endian and simplify VariantPixelBuffer

- Updated Boost.Endian with current git master; this adds native endian float types
- Added helper functions to do byteswapping with Boost.Endian, including complex float types
- `VariantPixelBuffer` refactored to remove big/little/native endian specialisations; nothing was intrinsically wrong with it, but the extra complexity was causing problems with some linkers, and would undoubtedly make the Windows linker explode, and it also bloated the symbol table due to the long type names

VariantPixelBuffer is now only specialised to hold `PixelBuffer`. This means that readers and writers will need to be responsible for converting data to and from the native form as needed. `FormatReader::readPlane` updated to do this, and the tests have been updated accordingly.

Comparison of the change:

```
Property Before After Using
Library size 30868943 7771248 ls -l
Exported symbols 28936 12441 nm -D | wc -l
Symbol list size 8370377 1990464 nm -D | wc -c
```

There is still room for future improvement regarding exported symbols. I'd like to look at using gcc/clang `-fvisibility=hidden` with explicit exports at some point.

--------

Testing:
- the unit tests should pass, and all jobs should remain green