»Update: Version 0.3.1 of safe_iop is now available. I had managed to typo the safe_sadd function and then did not test thoroughly. This is fixed in trunk with many tests. 0.3.1 contains the fix (backported) and one test. Hopefully, when the 0.4.0 release comes around, all my test cases will be much, much more thorough.

Update: Version 0.3 of safe_iop is now available. In addition, safe_iop now has its own home on google project hosting! This change brings about a cleaner completely macro-based interface. In addition, it frees itself from the quagmire of broken header files (for the most part) with regard to type limits. Please see the README in the tarball for more! Detailed plans and changes:
 To Do:
 - Add varargs style interface for safe_()
 - Add support for safe conversion
 - Add additional sizes to safe_iopf (currently 32-bit only)
   (this will make use of the safe conversion above)
 - Add left shift support
 - Add more test cases for interfaces (op_mixed)
 - Add more tests for edge cases I've missed? and for thoroughness

 = 0.3
 - solidified code into a smaller number of macros and functions
 - added typeless functions using gcc magic (typeof)
 - deprecrated old interfaces (-DSAFE_IOP_COMPAT)
 - discover size maximums automagically
 - separated test cases for easier understanding
 - significantly expanded test cases
 - derive type maximums and minimums internally (checked in testing)

Version 0.2 of safe_iop is now available.
  To Do:
  - Add left shift support
  - Add additional sizes to safe_iopf (currently 32-bit only)
  - Add more architecture dependent types
  - Add 24-bit helpers
  = 0.2
  - Removed dependence on twos complement arithmetic to allow macro-ized definitions
  - Added (s)size_t support
  - Added (u)int8,16,64 support
  - Added portable inlining
  - Added support for NULL result pointers
  - Added support for header-only use (safe_iop.c only needed for safe_iopf)
  = 0.1
  - Initial release

This page does not necessarily reflect the views of my employer or anyone I'm associated with.