ihnorton/Clang.jl — pull request #98 by kmsquire (2014-07-22 21:04:11+00:00)
Title: RFC: add type dependency ordering

I got around to adding dependency ordering for types (which has decreased my work in wrapping libav/ffmpeg significantly!). I'm not sure if or how this fits in with your other ideas (cf. Build EAR tool in #33), but if you haven't made much progress in that arena, this might be useful.

* Introduce an ExprUnit type for grouping together expressions
(e.g., enums), specifying dependencies, and maintaining
wrapped/output status
* Removed cache_wrapped (subsumed above)
* empty_structs is now a Set

* Type declarations, enums, and typealiases are stored in the
common_buf, along with dependency information.
* All enum Exprs are grouped together in the same ExprUnit
* For other Exprs, there is one ExprUnit per Expr
* Before outputting, the common_buf OrderedDict is dumped to an
array with dependencies properly ordered. (Circular
dependecies are implicitly detected, but remain.)

* Function declarations are wrapped as before (in an array)

Note: this subsumes #96, although those changes can be backed out. I find it useful having blank lines in the output, though.