X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmElementSet.cxx;h=dbf05c6065215f64dcf39c1dadd5bc4f271ede86;hb=c67ffef593e7635d8dfa7d3fe63d702e5afafc3e;hp=317c108f9b6df7f08104eaf262e6ee1e5e65866f;hpb=0ad9dae4659b21bfd5c834c1af724eab4dcdf4f6;p=gdcm.git diff --git a/src/gdcmElementSet.cxx b/src/gdcmElementSet.cxx index 317c108f..dbf05c60 100644 --- a/src/gdcmElementSet.cxx +++ b/src/gdcmElementSet.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmElementSet.cxx,v $ Language: C++ - Date: $Date: 2005/01/23 10:12:33 $ - Version: $Revision: 1.48 $ + Date: $Date: 2005/01/25 15:44:24 $ + Version: $Revision: 1.51 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,7 +28,7 @@ namespace gdcm //----------------------------------------------------------------------------- // Constructor / Destructor /** - * \brief Constructor from a given ElementSet + * \brief Constructor for a given ElementSet */ //BOZ depthLevel is not usefull anymore ElementSet::ElementSet(int depthLevel) @@ -42,21 +42,13 @@ ElementSet::ElementSet(int depthLevel) */ ElementSet::~ElementSet() { - for(TagDocEntryHT::iterator cc = TagHT.begin();cc != TagHT.end(); ++cc) - { - if ( cc->second ) - { - delete cc->second; - } - } - TagHT.clear(); + ClearEntry(); } //----------------------------------------------------------------------------- // Print /** - * \brief Prints the Header Entries (Dicom Elements) - * from the H Table + * \brief Prints the Header Entries (Dicom Elements) from the H Table * @param os ostream to write to * @param indent Indentation string to be prepended during printing */ @@ -97,133 +89,20 @@ void ElementSet::WriteContent(std::ofstream *fp, FileType filetype) } /** - * \brief retrieves a Dicom Element using (group, element) - * @param group Group number of the searched Dicom Element - * @param elem Element number of the searched Dicom Element - * @return + * \brief delete all entries in the ElementSet */ -DocEntry *ElementSet::GetDocEntry(uint16_t group, uint16_t elem) -{ - TagKey key = DictEntry::TranslateToKey(group, elem); - if ( !TagHT.count(key)) - { - return NULL; - } - return TagHT.find(key)->second; -} - -/** - * \brief Same as \ref Document::GetDocEntry except it only - * returns a result when the corresponding entry is of type - * ValEntry. - * @param group Group number of the searched Dicom Element - * @param elem Element number of the searched Dicom Element - * @return When present, the corresponding ValEntry. - */ -ValEntry *ElementSet::GetValEntry(uint16_t group, uint16_t elem) +void ElementSet::ClearEntry() { - DocEntry *currentEntry = GetDocEntry(group, elem); - if ( !currentEntry ) - { - return 0; - } - if ( ValEntry *entry = dynamic_cast(currentEntry) ) - { - return entry; - } - gdcmVerboseMacro( "Unfound ValEntry."); - - return 0; -} - -/** - * \brief Same as \ref Document::GetDocEntry except it only - * returns a result when the corresponding entry is of type - * BinEntry. - * @param group Group number of the searched Dicom Element - * @param elem Element number of the searched Dicom Element - * @return When present, the corresponding BinEntry. - */ -BinEntry *ElementSet::GetBinEntry(uint16_t group, uint16_t elem) -{ - DocEntry *currentEntry = GetDocEntry(group, elem); - if ( !currentEntry ) - { - return 0; - } - if ( BinEntry *entry = dynamic_cast(currentEntry) ) - { - return entry; - } - gdcmVerboseMacro( "Unfound BinEntry."); - - return 0; -} - -/** - * \brief Same as \ref Document::GetDocEntry except it only - * returns a result when the corresponding entry is of type - * SeqEntry. - * @param group Group number of the searched Dicom Element - * @param elem Element number of the searched Dicom Element - * @return When present, the corresponding SeqEntry. - */ -SeqEntry *ElementSet::GetSeqEntry(uint16_t group, uint16_t elem) -{ - DocEntry *currentEntry = GetDocEntry(group, elem); - if ( !currentEntry ) - { - return 0; - } - if ( SeqEntry *entry = dynamic_cast(currentEntry) ) - { - return entry; - } - gdcmVerboseMacro( "Unfound SeqEntry."); - - return 0; -} - - -//----------------------------------------------------------------------------- -// Protected - -/** - * \brief Checks if a given Dicom Element exists within the H table - * @param group Group number of the searched Dicom Element - * @param elem Element number of the searched Dicom Element - * @return true is found - */ -bool ElementSet::CheckIfEntryExist(uint16_t group, uint16_t elem ) -{ - const std::string &key = DictEntry::TranslateToKey(group, elem ); - return TagHT.count(key) != 0; -} - -/** - * \brief Searches within Header Entries (Dicom Elements) parsed with - * the public and private dictionaries - * for the element value representation of a given tag. - * @param group Group number of the searched tag. - * @param elem Element number of the searched tag. - * @return Corresponding element value representation when it exists, - * and the string GDCM_UNFOUND ("gdcm::Unfound") otherwise. - */ -std::string ElementSet::GetEntry(uint16_t group, uint16_t elem) -{ - TagKey key = DictEntry::TranslateToKey(group, elem); - if ( !TagHT.count(key)) + for(TagDocEntryHT::iterator cc = TagHT.begin();cc != TagHT.end(); ++cc) { - return GDCM_UNFOUND; + if ( cc->second ) + { + delete cc->second; + } } - - return ((ValEntry *)TagHT.find(key)->second)->GetValue(); + TagHT.clear(); } - -//----------------------------------------------------------------------------- -// Private - /** * \brief add a new Dicom Element pointer to the H Table * @param newEntry entry to add @@ -308,34 +187,27 @@ DocEntry *ElementSet::GetNextEntry() return NULL; } - -/** - * \brief Get the larst entry while visiting the DocEntrySet - * \return The last DocEntry if found, otherwhise NULL - */ -DocEntry *ElementSet::GetLastEntry() -{ - ItTagHT = TagHT.end(); - if ( ItTagHT != TagHT.begin() ) - return ItTagHT->second; - return NULL; -} - /** - * \brief Get the previous entry while visiting the Hash table (TagHT) - * \note : meaningfull only if GetFirstEntry already called - * \return The previous DocEntry if found, otherwhise NULL + * \brief retrieves a Dicom Element using (group, element) + * @param group Group number of the searched Dicom Element + * @param elem Element number of the searched Dicom Element + * @return */ -DocEntry *ElementSet::GetPreviousEntry() +DocEntry *ElementSet::GetDocEntry(uint16_t group, uint16_t elem) { - gdcmAssertMacro (ItTagHT != TagHT.begin()); + TagKey key = DictEntry::TranslateToKey(group, elem); + TagDocEntryHT::iterator it = TagHT.find(key); - --ItTagHT; - if (ItTagHT != TagHT.begin()) - return ItTagHT->second; + if ( it!=TagHT.end() ) + return it->second; return NULL; } +//----------------------------------------------------------------------------- +// Protected + +//----------------------------------------------------------------------------- +// Private //----------------------------------------------------------------------------- } // end namespace gdcm