[pygccxml-development] Removing template default arguments?
Brought to you by:
mbaas,
roman_yakovenko
From: Gustavo C. <gjc...@gm...> - 2008-08-26 12:09:38
|
2008/8/26 Roman Yakovenko <rom...@gm...> > On Tue, Aug 26, 2008 at 8:28 AM, Roman Yakovenko > <rom...@gm...> wrote: > > On Tue, Aug 26, 2008 at 1:58 AM, Gustavo Carneiro <gjc...@gm...> > wrote: > >> Sorry, I just discovered it's not a bug. It's not infinite recursion, > just > >> very slow :P > > > > This is also bug. I would like to see your use case, so I can improve it. > > > > The first obvious think we can do is to add cache for element_type > > method. This should dramatically improve the speed of your application > > - or discover another bottleneck. > > > >> It turns out that > >> pygccxml.declarations.container_traits.xxx_traits.element_type() is > rather > >> slow and I was calling it more often than I should. > >> > >> Now, I am left with the old problem of distinguishing between sequence > and > >> mapping containers... </hint> > > > > :-). I will work on this today. > > done. > > http://pygccxml.svn.sourceforge.net/viewvc/pygccxml?view=rev&revision=1408 > > I also added cache for element_type and key_type functionality. Let me > know whether this change improved performance or not. Thanks, Roman, it is indeed much faster now! :-) I have one more tricky question. I am getting this key_type: std::basic_string<char,std::char_traits<char>,std::allocator<char> > [struct] Now, I know this is just a std::string type, but PyBindGen does not know it. Is there any way to convert this into a simpler std::string -like definition. That is because I register and lookup types by type expression string, but if there are multiple definitions for the same type then things won't match. Well, I guess one solution for me would be to register the "std::basic_string<char, std::char_traits<char>, std::allocator<char> >" type string alongside std::string, but if there's anything better to do I'll take it. I guess this is a generic question. Given the simple test case I am working on: std::map<std::string, int> pygccxml reads this as: std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,int,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, int> > > Is there any easy way to just remove the template arguments that have the same value as the template default template argument value? I am guessing the answer is no, but it doesn't hurt to ask :P -- Gustavo J. A. M. Carneiro INESC Porto, Telecommunications and Multimedia Unit "The universe is always one step beyond logic." -- Frank Herbert |