On 15/07/2014 10:15 PM, Mathias Gaunard wrote:
On 15/07/14 08:04, Michael Shepanski wrote:
1. If you want some class to be mapped into SQL data, quince lets you write this sort of thing:
struct point { float x; float y; }; QUINCE_MAP_CLASS(point, (x)(y))
extern database db; table<point> points(db, "points");
The macro QUINCE_MAP_CLASS uses a bit of Boost.Preprocessor magic and a bit of template metaprogramming to produce all the statically typed metadata that quince needs, regarding the user's type. There is no code generation step.
There are already macros to do this in Boost Fusion. Why not re-use them?
Could you clarify what you mean by "do this"? QUINCE_MAP_CLASS builds a class with exactly the data members, function members, and bases that quince requires. Also, if quince did use Booost.Fusion, it would only be at one site. So it seemed best to avoid the inter-library dependence. I think I'm following the advice in http://www.boost.org/development/reuse.html.
Boost.Fusion is a tuple manipulation library initially developed for a parser generator EDSL.
I'm not actually doing tuple manipulation here. That's not to say the task couldn't be solved by a detour through tuples, but it /would/ be a detour. Regards, --- Michael