X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmObject.cxx;h=f9a4760655cefb6d3c3762ef916b167ed40d44f0;hb=e1ffd4c059b41b2b1aae3ad6c44e23714ecacfd6;hp=debbfdd543160e55b1f4bf5580c643134af5db5f;hpb=2aac3838df30350813968f97c1432a4955eb3927;p=gdcm.git diff --git a/src/gdcmObject.cxx b/src/gdcmObject.cxx index debbfdd5..f9a47606 100644 --- a/src/gdcmObject.cxx +++ b/src/gdcmObject.cxx @@ -1,10 +1,10 @@ // gdcmObject.cxx //----------------------------------------------------------------------------- #include "gdcmObject.h" -#include "gdcmUtil.h" +#include "gdcmGlobal.h" +#include "gdcmDebug.h" //----------------------------------------------------------------------------- -// Constructor / Destructor /** * \ingroup gdcmObject * \brief Constructor @@ -44,11 +44,10 @@ gdcmObject::~gdcmObject(void) { void gdcmObject::Print(std::ostream &os) { if(printLevel>=0) { ListTag::iterator i; - //for(ListTag::iterator i=beginObj;i!=endObj;++i) // JPR for(i=beginObj;;++i) { (*i)->SetPrintLevel(printLevel); (*i)->Print(os); - if (i == endObj) break; + if (i == endObj) break; } } } @@ -61,7 +60,6 @@ void gdcmObject::Print(std::ostream &os) { * @return */ std::string gdcmObject::GetEntryByNumber(guint16 group, guint16 element) { - //for(ListTag::iterator i=beginObj;i!=endObj;++i) // JPR for(ListTag::iterator i=beginObj;;++i) { if ( (*i)->GetGroup()==group && (*i)->GetElement()==element) return (*i)->GetValue(); @@ -85,6 +83,38 @@ std::string gdcmObject::GetEntryByName(TagName name) { return GetEntryByNumber(dictEntry->GetGroup(),dictEntry->GetElement()); } +/** + * \ingroup gdcmObject + * \brief Set the 'boundaries' gdcmObject (gdcmDicomDirPatient, + * gdcmDicomDirStudy, gdcmDicomDirSerie, gdcmDicomDirImage) + * comming for the parsing of a DICOMDIR file + * \warning NOT en user intended function + * @param flag = 0 when META to be dealt with + */ +void gdcmObject::ResetBoundaries(int flag) { + + if (flag) { // it's NOT a META + // upwards to fffe,e000 + for( i=j=debut(); + ((*i)->GetGroup() != 0xfffe) && ((*i)->GetElement() != 0xe000); + --i,j--) { + } + beginObj=j; + } + + // upwards again to fffe,e000 + if (fin()== (--(plistEntries->end())) ) // Don't try anything more when end + return; // of Chained List is reached + + + for( i=j=fin(); + ((*i)->GetGroup() != 0xfffe) && ((*i)->GetElement() != 0xe000); + --i,j--) { + } + j--; + endObj=j; +} + /** * \ingroup gdcmParser * \brief Sets Entry (Dicom Element) value of an element, @@ -101,7 +131,6 @@ std::string gdcmObject::GetEntryByName(TagName name) { bool gdcmObject::SetEntryByNumber(std::string val,guint16 group, guint16 element) { - gdcmHeaderEntry *a; for(ListTag::iterator i=beginObj;;++i) { if ( (*i)->GetGroup() == 0xfffe && (*i)->GetElement() == 0xe000 ) continue; @@ -114,7 +143,7 @@ std::string gdcmObject::GetEntryByName(TagName name) { if ( ! ptagHT->count(key)) { // we assume a Public Dictionnary *is* loaded gdcmDict *PubDict = gdcmGlobal::GetDicts()->GetDefaultPubDict(); - // if the invoqued (group,elem) doesn't exist inside the Dictionary + // if the invoked (group,elem) doesn't exist inside the Dictionary // we create a VirtualDictEntry gdcmDictEntry *DictEntry = PubDict->GetDictEntryByNumber(group, element); if (DictEntry == NULL) { @@ -152,7 +181,6 @@ std::string gdcmObject::GetEntryByName(TagName name) { */ TagHeaderEntryHT gdcmObject::GetEntry(void) { TagHeaderEntryHT HT; - //for(ListTag::iterator i=beginObj;i!=endObj;++i) // JPR for(ListTag::iterator i=beginObj;;++i) { HT.insert( PairHT( (*i)->GetKey(),(*i)) ); if (i == endObj) break; @@ -169,7 +197,6 @@ TagHeaderEntryHT gdcmObject::GetEntry(void) { */ ListTag gdcmObject::GetListEntry(void) { ListTag list; - //for(ListTag::iterator i=beginObj;i!=endObj;++i) // JPR for(ListTag::iterator i=beginObj;;++i) { list.push_back(*i); if (i == endObj) break; @@ -180,7 +207,7 @@ ListTag gdcmObject::GetListEntry(void) { //----------------------------------------------------------------------------- // Protected -/* +/** * \ingroup gdcmObject * \brief add the 'Object' related Dicom Elements to the listEntries * of a partially created DICOMDIR @@ -201,7 +228,7 @@ void gdcmObject::FillObject(std::list elemList) { tmpEl=it->elem; dictEntry=gdcmGlobal::GetDicts()->GetDefaultPubDict()->GetDictEntryByNumber(tmpGr,tmpEl); entry=new gdcmHeaderEntry(dictEntry); - entry->SetOffset(0); // just to avoid missprinting //JPR + entry->SetOffset(0); // just to avoid further missprinting entry->SetValue(it->value); if(dictEntry->GetGroup()==0xfffe) @@ -225,7 +252,7 @@ void gdcmObject::FillObject(std::list elemList) { entry->SetLength(entry->GetValue().length()); } ptagHT->insert( PairHT(entry->GetKey(),entry) ); // add in the (multimap) H Table - plistEntries->insert(debInsertion ,entry); // en tete de liste des Patients + plistEntries->insert(debInsertion ,entry); // add at the begining of the Patient list ++finInsertion; }