Adtpp: lightweight efficient safe polymorphic algebraic data types for C. (13th May 2016)