<div dir="ltr"><br><br><div class="gmail_quote">On Wed, Feb 25, 2009 at 5:41 PM, David Nolden <span dir="ltr"><<a href="mailto:david.nolden.kdevelop@art-master.de">david.nolden.kdevelop@art-master.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Am Mittwoch 25 Februar 2009 14:10:46 schrieb Lior Mualem:<br>
<div class="Ih2E3d">> 1. I couldn't find a "Class Browser" tool, is anyone doing something like<br>
> that? or can I start sketching something? I would hate doing duplicate<br>
> work.<br>
</div>That thing has been moved into playground because it isn't ready yet. If you<br>
would fix it up, we could move it back into kdevplatform. I personally don't<br>
really need it, but it feels like there is high demand for it. :-)</blockquote><div>We'll the reason I wanted such a thing is to be able to search and navigate the classes in the project easily. sometimes having a file view from the project isn't enough.<br>
I also noticed that there exists a duchainviewer project under extra-plugins, I didn't try to compile it or use it yet but isn't it the same as a class browser? or is it ment to show lower level than a class (such as code block). <br>
</div><div><br> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
The main problem of the class-browser is that it currently is somewhat<br>
inefficient, because it loads too much duchain data. I have some ideas on how<br>
to make it more efficient, by only loading data for really visible items, and<br>
only when the class-browser is actually visible.</blockquote><div>I'll be sure to contact you about this once I have the class browser under control.<br></div><div><br><br></div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">
> Any help here would greatly be appreciated.<br>
> I already think that kdevelop rocks, especially it's cpp parser - one of<br>
> the best ones I've seen (although it still can't parse<br>
> boost::multi_index_container properly, no one can, but I'm sure it's just<br>
> temporary ;) ).<br>
> I can't wait to help improve it further and make it the best IDE around!<br>
<br>
</div><br>I haven't used multi_index_container. If you could extract a minimal example<br>
from it that shows what is not working about it, then I could fix it.</blockquote><div><br>Well, it's not exactly minimal. <br>I'll give a small program and comment about the stuff that didn't parse well.<br>
The program compiles successfully so it means that no include directive is missing<br><br>** CODE **<br><br>#include <boost/foreach.hpp><br>#include <iostream><br><br>#include <string><br>#include <boost/multi_index_container.hpp><br>
#include <boost/multi_index/member.hpp><br>#include <boost/multi_index/composite_key.hpp><br>#include <boost/multi_index/hashed_index.hpp><br>#include <boost/multi_index/ordered_index.hpp><br><br>struct Entry<br>
{<br> Entry(int ValA,<br> int ValB,<br> std::string ValC) :<br> m_ValA(ValA),<br> m_ValB(ValB),<br> m_ValC(ValC)<br> {}<br><br> int m_ValA;<br> int m_ValB;<br> std::string m_ValC;<br>
};<br><br>typedef boost::multi_index::member<<br> Entry,<br> int,<br> &Entry::m_ValA> TValAMember;<br><br>typedef boost::multi_index::member<<br> Entry,<br> int,<br> &Entry::m_ValB> TValBMember;<br>
<br>typedef boost::multi_index::member<<br> Entry,<br> std::string,<br> &Entry::m_ValC> TValCMember;<br><br>// the "composite_key" class is not recognized.<br>// I don't think I ever used it directly, it's more for the indexing below but<br>
// I guess that if we failed to identify it here than we'll fail to complete<br>// the definition of the index below.<br>typedef boost::multi_index::composite_key<<br> Entry,<br> TValBMember,<br> TValCMember<br>
> TValBCCompositeKey;<br><br>struct ValAIndex {};<br>struct ValBCIndex {};<br><br>// Below, the "indexed_by" class and the "tag" classes are not recognized.<br>// since it's the heart of the whole multi_index_container, i guess that<br>
// failure to recognize this class will cause the entire multi_index_container<br>// definition to fail parsing.<br>typedef boost::multi_index::multi_index_container<<br> Entry,<br> boost::multi_index::indexed_by<<br>
boost::multi_index::hashed_unique<<br> boost::multi_index::tag<ValAIndex>,<br> TValAMember<br> >,<br> boost::multi_index::ordered_non_unique<<br> boost::multi_index::tag<ValBCIndex>,<br>
TValBCCompositeKey<br> ><br> ><br>> TContainer;<br><br>// The "index_iterator" class is not recognized - I can't go to its definition<br>// but it's not marked with a red underline as well.<br>
// The "type" class is not recognized - but I guess it's because the<br>// index_iterator class is not recognized (maybe it's because the<br>// TContainer class wasn't parsed well?).<br>typedef TContainer::index_iterator<ValAIndex>::type TValAIterator;<br>
typedef TContainer::index_iterator<ValBCIndex>::type TValBCInterator;<br><br>void UseContainer()<br>{<br> TContainer Container;<br><br> Container.insert( Entry(1, 1, "1") );<br> Container.insert( Entry(2, 2, "2") );<br>
Container.insert( Entry(3, 3, "3") );<br> Container.insert( Entry(4, 4, "4") );<br><br> BOOST_FOREACH( const Entry& value, Container.get<ValBCIndex>() )<br> {<br> std::cout << value.m_ValC << std::endl;<br>
}<br><br> TValAIterator iter = Container.get<ValAIndex>().find(1);<br> std::cout << iter->m_ValC << std::endl;<br><br> // Needless to say that I get no results for the "Container" class members when I try code<br>
// completion for the above code.<br>
<br>}<br><br><br></div></div><br><br><br></div>