+/**
+ * \brief Get the first ValEntry while visiting *the* 'zero level' DocEntrySet
+ * (DocEntries out of any Sequence)
+ * This method is designed for Python users
+ * \return The first ValEntry if found, otherwhise NULL
+ */
+ValEntry *ElementSet::GetFirstValEntry()
+{
+ gdcm::ValEntry *valEntry;
+ gdcm::DocEntry *d = GetFirstEntry();
+ // an other iterator is needed to allow user iterate
+ // at the same time both on DocEntries and ValEntries
+ ItValEntryTagHT = ItTagHT;
+ if ( valEntry = dynamic_cast<gdcm::ValEntry*>(d))
+ return valEntry;
+ return GetNextValEntry();
+}
+
+/**
+ * \brief Get the next ValEntry while visiting *the* 'zero level' DocEntrySet
+ * (DocEntries out of any Sequence)
+ * \note : meaningfull only if GetFirstValEntry already called
+ * \return The next ValEntry if found, otherwhise NULL
+ */
+ValEntry *ElementSet::GetNextValEntry()
+{
+ gdcm::ValEntry *valEntry;
+ gdcm::DocEntry *d = ItValEntryTagHT->second;
+ ++ItValEntryTagHT;
+ while( d )
+ {
+ if ( valEntry = dynamic_cast<gdcm::ValEntry*>(d))
+ return valEntry;
+ else
+ return GetNextValEntry();