- * \ingroup gdcmHeader
- * \brief Get the dictionnary entry identified by a given tag (group,element)
- * @param group group of the entry to be found
- * @param element element of the entry to be found
- * @return the corresponding dictionnary entry when existing, NULL otherwise
+ * \ingroup gdcmDict
+ * \brief adds a new Dicom Dictionary Entry
+ * @param NewEntry entry to add
+ * @return false if Dicom Element already exists
+ */
+bool gdcmDict::AddNewEntry(gdcmDictEntry *NewEntry)
+{
+ TagKey key;
+ key = NewEntry->GetKey();
+
+ if(KeyHt.count(key) == 1)
+ {
+ dbg.Verbose(1, "gdcmDict::AddNewEntry already present", key.c_str());
+ return(false);
+ }
+ else
+ {
+ KeyHt[NewEntry->GetKey()] = NewEntry;
+ NameHt[NewEntry->GetName()] = NewEntry;
+ return(true);
+ }
+}
+
+/**
+ * \ingroup gdcmDict
+ * \brief replaces an already existing Dicom Element by a new one
+ * @param NewEntry new entry (overwrites any previous one with same tag)
+ * @return false if Dicom Element doesn't exist
+ */
+bool gdcmDict::ReplaceEntry(gdcmDictEntry *NewEntry) {
+ if ( RemoveEntry(NewEntry->gdcmDictEntry::GetKey()) ) {
+ KeyHt[NewEntry->GetKey()] = NewEntry;
+ NameHt[NewEntry->GetName()] = NewEntry;
+ return (true);
+ }
+ return (false);
+}
+
+/**
+ * \ingroup gdcmDict
+ * \brief removes an already existing Dicom Dictionary Entry,
+ * identified by its Tag
+ * @param key (group|element)
+ * @return false if Dicom Dictionary Entry doesn't exist
+ */
+bool gdcmDict::RemoveEntry(TagKey key)
+{
+ if(KeyHt.count(key) == 1)
+ {
+ gdcmDictEntry* EntryToDelete = KeyHt.find(key)->second;
+
+ if ( EntryToDelete )
+ {
+ NameHt.erase(EntryToDelete->GetName());
+ delete EntryToDelete;
+ }
+
+ KeyHt.erase(key);
+ return (true);
+ }
+ else
+ {
+ dbg.Verbose(1, "gdcmDict::RemoveEntry unfound entry", key.c_str());
+ return (false);
+ }
+}
+
+/**
+ * \ingroup gdcmDict
+ * \brief removes an already existing Dicom Dictionary Entry,
+ * identified by its group,element number
+ * @param group Dicom group number of the Dicom Element
+ * @param element Dicom element number of the Dicom Element
+ * @return false if Dicom Dictionary Entry doesn't exist