Datatype99: C99 with Sum Types, v0.1.0
What is this sorcery?<p><pre><code>    #include <datatype99.h>
    
    datatype(
            BinaryTree,
            (Leaf, int),
            (Node, struct BinaryTree *, int, struct BinaryTree *)
    );

</code></pre>
What kind of preprocessor black magic can you do so that this code compiles?  I don't dare to open the file datatype99.h lest it casts a dark spell on me.