[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