X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmElValSet.cxx;h=634237d2da097a174b036a7afeb4431165ba2c99;hb=14276a384662f79f2daf744809f3df4227f9cded;hp=d9e8c39d34f029d759563ce880ad0d72986b3ed2;hpb=f04b9ef9bad66e1847e8139db9cd4126e4340301;p=gdcm.git diff --git a/src/gdcmElValSet.cxx b/src/gdcmElValSet.cxx index d9e8c39d..634237d2 100644 --- a/src/gdcmElValSet.cxx +++ b/src/gdcmElValSet.cxx @@ -3,7 +3,13 @@ #include "gdcmUtil.h" #include "gdcmElValSet.h" #include "gdcmTS.h" -#include +#ifdef GDCM_NO_ANSI_STRING_STREAM +# include +# define ostringstream ostrstream +# else +# include +#endif + gdcmElValSet::~gdcmElValSet() { for (TagElValueHT::iterator tag = tagHt.begin(); tag != tagHt.end(); ++tag) { @@ -18,15 +24,6 @@ gdcmElValSet::~gdcmElValSet() { NameHt.clear(); } -TagElValueHT & gdcmElValSet::GetTagHt(void) { - return tagHt; -} - - -ListTag & gdcmElValSet::GetListElem(void) { - return listElem; -} - /** * \ingroup gdcmElValSet * \brief @@ -63,11 +60,13 @@ int gdcmElValSet::CheckIfExistByNumber(guint16 Group, guint16 Elem ) { void gdcmElValSet::Print(std::ostream & os) { size_t o; - short int g, e; + unsigned short int g, e; TSKey v; std::string d2; gdcmTS * ts = gdcmGlobal::GetTS(); + std::cout << "------------- using tagHt ---------------------" << std::endl; + for (TagElValueHT::iterator tag = tagHt.begin(); tag != tagHt.end(); ++tag){ @@ -98,24 +97,26 @@ void gdcmElValSet::Print(std::ostream & os) { os << std::endl; } - std::cout << "----------------------------------------------" << std::endl; - - //for (ListTag::iterator i = listElem.begin(); - - char tag[9]; + std::cout << "------------ using listElem -------------------" << std::endl; + + guint32 lgth; + char greltag[10]; //group element tag - for (std::list::iterator i = listElem.begin(); + for (ListTag::iterator i = listElem.begin(); i != listElem.end(); ++i){ - sprintf(tag,"%04x|%04x",(*i)->GetGroup(),(*i)->GetElement()); g = (*i)->GetGroup(); e = (*i)->GetElement(); v = (*i)->GetValue(); o = (*i)->GetOffset(); + sprintf(greltag,"%04x|%04x",g,e); d2 = _CreateCleanString(v); // replace non printable characters by '.' - //os << std::hex <GetLength(); + os << greltag << ": lgth : "; + lgth = (*i)->GetReadLength(); + if ( lgth == 0xffffffff) + os << std::hex << lgth << std::dec ; + else + os << lgth; os << ", Offset : " << o; os << " x(" << std::hex << o << std::dec << ") "; os << "\t[" << (*i)->GetVR() << "]"; @@ -133,9 +134,7 @@ void gdcmElValSet::Print(std::ostream & os) { } } os << std::endl; - - } - + } } /** @@ -233,9 +232,6 @@ int gdcmElValSet::SetElValueByNumber(std::string content, else lgr = l; tagHt[key]->SetLength(lgr); - - - return 1; } @@ -435,9 +431,14 @@ void gdcmElValSet::UpdateGroupLength(bool SkipSequence, FileType type) { /** * \ingroup gdcmElValSet - * \brief - * @param type - * @param _fp + * \brief writes on disc according to the requested format + * \ (ACR-NEMA, DICOM, RAW) the image + * \ warning does NOT add the missing elements in the header : + * \ it's up to the user doing it ! + * \ (function CheckHeaderCoherence to be written) + * @param type type of the File to be written + * (ACR-NEMA, DICOM, RAW) + * @param _fp already open file pointer * @return */ void gdcmElValSet::WriteElements(FileType type, FILE * _fp) { @@ -449,6 +450,10 @@ void gdcmElValSet::WriteElements(FileType type, FILE * _fp) { guint16 val_uint16; std::vector tokens; + + // TODO : use listElem to iterate, not TagHt! + // pb : gdcmElValSet.Add does NOT update listElem + // find a trick in STL to do it, at low cost ! void *ptr;