<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>