[Dcmlib] gdcmFile

Mathieu Malaterre mathieu.malaterre at kitware.com
Sun Jun 20 17:36:11 CEST 2004


> Ben, en theorie l'API devrait permetre les deux (c'etait le "design"
> initial):
>  - soit l'appelant fait l'allocation et ensuite appelle 
>    size_t GetImageDataIntoVector(void* destination, size_t MaxSize);
>    size_t GetImageDataIntoVectorRaw(void* destination, size_t MaxSize);
>  - soit l'appelant laisse gdcm faire l'allocation et ensuite invoque
>    void * GetImageData();
>    void * GetImageDataRaw();

Le truc qui me gene c'est que les signatures sont differentes. D'autant plus que la taille est aussi un membre de la classe. Est-ce que dans les deux cas, on peut etre consistant, du style:

size_t GetImageDataIntoVector(void* destination);
size_t GetImageDataIntoVectorRaw(void* destination);

  Ou alors j'ai rater l'interet du deuxieme size_t...

> Sinon void* ou char* ou uchar*, j'ai pas d'opinion, si ce n'est que
> void* me semble plus neutre (mais bon, sincerement je ne sais pas
> faire de difference semantique sur cette simple declaration: bouh).

Moi non plus je n'ai pas de preference, c'est juste que si on retourne un void*, il faut que l'utilisateur le cast explicitement en un type (char * par ex), pour pouvoir le detruire:

http://public.kitware.com/Public/Sites/zion.kitware/GDCM-Linux-g++-3.3/20040620-0500-Nightly/BuildWarning.html

/home/ibanez/src/gdcm/Test/TestWriteSimple.cxx: In function `int 
   TestWriteSimple(int, char**)':
/home/ibanez/src/gdcm/Test/TestWriteSimple.cxx:39: warning: deleting `void*' is 
   undefined


Ce qu'ont fais dans VTK, c'est fournir la double signature:

GetFoo(void* bar);
void *GetFoo();

Dans le premier cas, on demande -implicitement- a l'utilisateur de nous fournir un 'void*' allouer.

Dans le second cas, on retourne generalement une var membre (voire une var static ).

Ok sinon je bosse sur gdcmHeaderHelper

Bone faim de semeine :p
Mathieu





More information about the Dcmlib mailing list