[Dcmlib] GetFirstEntry ?

Mathieu Malaterre mathieu.malaterre at kitware.com
Tue Jan 18 19:25:25 CET 2005


> Desole ...
> On a d'autre part un un truc un peu (bcp) brutal :
> Viré l'accesseur sur la H Table et sur les Listes Chainees (il n'y en a 
> objectivement plus besoin, GetFirst et GetNext remplacent la de maniere 
> + securisée)
> Mais je viens de voir le code de Maracas, il y en *partout*.
> Ils vont passer des journées a faire des modifs, qui, objectivement, 
> n'apporteront rien (ils sont grands, ils n'ont pas profité d'avoir acces 
> a l'implantation physique pour tout peter ...)
> Je me demande s'il ne faudrait pas remettre ces accesseurs, avec, comme 
> seule description 'DON'T USE. Will BE REMOVED at NEXT RELEASE"

Est-ce qu'ils sont au courant...
Que ce que dis David ?

> Ca a l'air velu, mais apetissant, leur truc!
> Mais moi, je reste reveur sur le coté diaboliquement mal fichu des 
> accesseurs de la STL !
> Ils auraient fait des trucs du genre :
> FindFirst, qui renvoie un pointeur sur le premier et NULL si la liste 
> est vide.
> FindNext, qui renvoie un pointeur sur celui qui suit le dernier accede, 
> et NULL si c'etait le dernier
> FindPrevious : meme chose mais dans l'autre sens.
> au lieu de pointer sur le futur endroit ou se fera l'insert, si on en 
> fait un ..
> ... ca simplifierait pas mal la vie !

FindPrevious c'est un peu bizarre. Normalement t'as plutot un sens de 
parcours. Tu peux pas tout le temps avoir un FindPrevious, FindNext est 
plus generique.

De plus lorsque tu veux acceder au 5e elements t'es sense pouvoir faire 
GetNext() 5 fois sans overhead (= pas besoin de retourner l'objet 
trouver). C'est pour ca que les methode First/Next ne retourne rien.
Un exemple c'est un iterateur abstrait sur deux type de donnes, 
l'incrementation de l'index est facile ++ sur un int. Mais l'acces aux 
donnees se fais par un appel virtuel lourd sur le type de donne specifique.

Je pense que c'est pas mal fichu leur machin...

> Mais ca oblige a 'exposer' la liste (ou la H table), et ca laisse un 
> utilisateur mal degourdit la possibilite de tout peter, non?

list peut etre:

class list
{
public:
    void First()
    void Next();
    bool IsDone();
    Element  GetElement();
private:
    hash internal;
}

donc non on n'expose pas le mechanisme interne...ou alors j'ai pas 
compris la question.

Mathieu





More information about the Dcmlib mailing list