Hello Stefan and Nikolay, thanks for the replies. I have been using as well approaches similar to those you outlined. My main concern is the automation of the whole procedure. I have a fairly complicated hierarchy of template classes that I am exposing, and I need to be able to add new exposed instances in a kind of programmatic way (e.g., I am using a global counter n that gets increased each time a new instance is exposed, and I am calling the exposed classes "__vecor_type_0", "__vecor_type_1", ..., "__vecor_type_n"). Then I need to re-establish the connection between these names and the "template system" implemented on the Python side.
I think it would be nice to have a Boost.Python mechanism to handle this type of usage, but for now I will try to get something working for my specific case (and then maybe reply here if I manage and if there is interest). Thanks for the help and kind regards, Francesco. On 19 March 2014 20:27, Nikolay Mladenov <nikolay.mlade...@gmail.com> wrote: > To add to Stefan's answer: > > I do the the same and also use visitors to add the same sets of members to > classes, with possible customizations via trait classes. > > HTH > > > On Wed, Mar 19, 2014 at 1:36 PM, Stefan Seefeld <ste...@seefeld.name>wrote: > >> Francesco, >> >> I have done something like what you are suggesting. It essentially boils >> down to defining a function template like >> >> template <typename T> >> void define_vector(char const *name) >> { >> class_<...> vector(name); >> ... >> } >> >> >> and then calling that multiple times: >> >> define_vector<int>("IVector"); >> define_vector<long>("LVector"); >> ... >> >> Providing a factory function that instantiates one of those based on a >> value-type selector as you want can be easily done on the Python side. >> >> I don't think this can be automated any further. In particular, it is >> clear that any type you may want to instantiate in Python has to be >> compiled explicitly into the extension module. I.e., you need to >> explicitly instantiate the templates above, by explicitly calling the >> functions for the types you want to see supported at runtime. There is >> no JIT compilation for this. >> >> Stefan >> >> -- >> >> ...ich hab' noch einen Koffer in Berlin... >> >> _______________________________________________ >> Cplusplus-sig mailing list >> Cplusplus-sig@python.org >> https://mail.python.org/mailman/listinfo/cplusplus-sig >> > > > _______________________________________________ > Cplusplus-sig mailing list > Cplusplus-sig@python.org > https://mail.python.org/mailman/listinfo/cplusplus-sig >
_______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org https://mail.python.org/mailman/listinfo/cplusplus-sig