int AutoCompData::BuildMemberList( const wxString& name, wxString& list ) const { // First find the object... const AutoCompClass* found = FindClassOrObject( name ); if ( !found ) return 0; // TODO: Should we add members of dupes? // Now loop till we run out of base classes. wxArrayString tempArray; wxString temp; size_t len = 0; while ( found ) { for ( int i=0; i < found->GetFunctions().GetCount(); i++ ) { temp = found->GetFunctions()[i]->GetMethodName() + IDENT_FUNCTION; len += temp.Len() + 1; tempArray.Add( temp ); } for ( int i=0; i < found->GetVars().GetCount(); i++ ) { temp = found->GetVars()[i]->GetName() + IDENT_VAR; len += temp.Len() + 1; tempArray.Add( temp ); } const wxString& base = found->GetBase(); if ( base.IsEmpty() ) break; found = FindClassOrObject( base ); } wxString last, member; tempArray.Sort( CmpStringNoCase ); list.Alloc( len - 1 ); for ( int i=0; i < tempArray.GetCount(); i++ ) { member = tempArray[i]; if ( member.CmpNoCase( last ) == 0 ) continue; list.Append( member ); list.Append( ' ' ); last = member; } list.RemoveLast(); list.Shrink(); return (int)tempArray.GetCount(); }