On Thursday, July 26, 2012 08:48:33 Philippe Sigaud wrote: > On Thu, Jul 26, 2012 at 8:24 AM, Jonathan M Davis <jmdavisp...@gmx.com> wrote: > > They've made my life way easier on a number of projects lately - > > particularly involving parsing. > > Yeah D! > Nice use of mixins. I was a bit meh at the beginning (2009?) but the > combination of templates, CTFE which can be used to generate the > string and/or tansform it and mixins to inject them on code is simply > wonderful.
To make things even cooler, I just figured out that if I added with statements into the mix, I don't even have to change the templates to know about which fields are on which structs or to use a different template per struct or pass the struct name to the template or anything like that. It just automatically uses the field in the struct thanks to with. > > On top of that, all I have to do is alter the few templates that I use to > > generate the strings, and I can make it print out the value, or append it > > to another buffer, or assign it to a corresponding field in a struct, so > > on and so forth. It saves quite a bit of code duplication, and makes it > > _really_ easy told change what a whole ton of lines of code do. > > You might want to use debug/log flags like this: > > mixin(parseUEV!("bit_depth_luma_minus8", Debug.yes)); > > and then activate debugging/logging with static ifs inside the template. Not a bad idea, though in most cases at this point, I either want everything or nothing as far as debug output goes, so it wouldn't help much. In other situations, I can see how it would be very useful though. - Jonathan M Davis