On 9/16/2013 5:57 PM, Sean Conner wrote:|
> Another thing I've found (by doing Lua bindings by hand) is that a
> mechanical approach really doesn't make for good Lua bindings.
> Doing it by hand, I did :
> syslog('notice',"The foo is %s",status)
> which is MUCH nicer (IMHO) than other syslog() interfaces for Lua
> I've seen.
A hybrid approach works really well. Using Dub I have dozens of automatically generated bindings, but when a case like the above comes along I simply override THAT binding with one that's more Lua-friendly.
For some libraries there can be dozens (or hundreds?) of functions that can be automatically bound for every one that needs a customize interface. I'm sure others are the reverse; depends on the application.
And doing bindings that involve C++ classes being bound as Lua "objects" involves a LOT of code I don't want to write a dozen times for a dozen classes; using a generator like Dub that lets you write template code for each kind of binding, so if I decide to change my binding technique, I can change it in one place, regenerate bindings, and have it work that way everywhere. Yes I could hide that kind of binding in C macros, but it still involves boilerplate that I need to write, but that's just a "dumb" version of code generation. Customized code generation is awesome when it works and it's optimized for your use case.