
Joaquin! Glad you responded and Good to be "talking" with you again :) Below:
On Behalf Of JOAQUIN LOPEZ MU?Z
[Brian Braatz Writes:]
I am not sure if he is still interested, but Joaquin Munez and I exchanged emails awhile back about collaborating on such a beast.
The general idea was to take the functionality in multi-index containerand make it work dynamically.
[JOAQUIN LOPEZ MUNEZ Writes:]
I am still interested, and it is my plan to implement a dynamic_multi_index_container in the future, if there's interest in such a thing --serving as the foundation for a DB table structure would be a very exciting application, undoubtedly.
Let me sketch what I have in mind: The part of adding/removing indices at run time is not too hard: I haven't written any actual code, but the design of that feature seems reasonably straightforward to me. Some speed/space performance will be lost, but I guess this is expected.
The hard part, IMHO, is how to gain access to such indices. Clearly some kind of runtime polymorhpisn is involved for a dynamic_multi_index_container to have any use: otherwise, the user code would have to know the exact type of the index it is retrieving. So we need something more powerful than the current static get<> interface. A possibility is to retrieve indices by mean of *interfaces* as defined in Jonathan Turkanis' BIL library:
[Brian Braatz Writes:] If you would please elaborate. (some of us are "slower" than others :) ). is the problem getting to the index objects themselves via inherit_linearly? if you have dynamic data, then I am thinking you also have dynamically applied indices? Maybe I can elaborate- consider the following pseudo code: connection con = db.connect("myserver,root,password,mydatabase"); dynamic_table dt; // the select "*" means bring me back all the fields from that table // even though I don't know what the fields ARE yet dt = query("select * from person"); // ok so now dt has an UNKNOWN number of columns dt.add_index( index("first_name")); // or something along those lines. in this case, the index is applied dynamically. so how does that connect with the things you said ? Thanks, Brian