Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

gdcm::DocEntrySet Class Reference

DocEntrySet is an abstract base class for ElementSet and SQItem which are both containers for DocEntries. ElementSet is based on the STL map<> container (see ElementSet::TagHT), as opposed to SQItem which is based on an STL list container (see ListDocEntry). Since the syntax for adding a new element to a map<> or a list<> differ, DocEntrySet is designed as an adapter to unify the interfaces of DocEntrySet and ElementSet. As an illustration of this design, please refer to the implementation of AddEntry (or any pure virtual method) in both derived classes. This adapter unification of interfaces enables the parsing of a DICOM header containing (optionaly heavily nested) sequences to be written recursively [see Document::ParseDES which calls Document::ParseSQ, which in turns calls Document::ParseDES ]. More...

#include <gdcmDocEntrySet.h>

Inheritance diagram for gdcm::DocEntrySet:

gdcm::Base gdcm::ElementSet gdcm::SQItem gdcm::Document gdcm::DicomDirObject gdcm::DicomDir gdcm::File gdcm::DicomDirImage gdcm::DicomDirMeta gdcm::DicomDirPatient gdcm::DicomDirSerie gdcm::DicomDirStudy List of all members.

Public Member Functions

 DocEntrySet ()
 Canonical Constructor.

virtual ~DocEntrySet ()
 Canonical Destructor.

virtual void WriteContent (std::ofstream *fp, FileType filetype)=0
 write any type of entry to the entry set

virtual void ClearEntry ()=0
 Remove all Entry in the entry set.

virtual bool AddEntry (DocEntry *Entry)=0
 adds any type of entry to the entry set

virtual bool RemoveEntry (DocEntry *EntryToRemove)=0
 Removes any type of entry out of the entry set, and destroys it.

virtual bool RemoveEntryNoDestroy (DocEntry *EntryToRemove)=0
 Removes any type of entry out of the entry set, DOESN'T destroy it.

virtual DocEntryGetFirstEntry ()=0
 Gets the first entry of any type of set.

virtual DocEntryGetNextEntry ()=0
 Gets the next entry of any type of set.

virtual std::string GetEntryValue (uint16_t group, uint16_t elem)
 Get the "std::string representable" value of the Dicom entry.

virtual void * GetEntryBinArea (uint16_t group, uint16_t elem)
 Gets (from Header) a 'non string' element value.

virtual int GetEntryLength (uint16_t group, uint16_t elem)
 Searches within Header Entries (Dicom Elements) parsed with the public and private dictionaries for the value length of a given tag..

virtual std::string GetEntryVR (uint16_t group, uint16_t elem)
 Searches within Header Entries (Dicom Elements) parsed with the public [and private dictionaries] for the element value representation of a given tag.. Obtaining the VR (Value Representation) might be needed by caller to convert the string typed content to caller's native type (think of C++ vs Python). The VR is actually of a higher level of semantics than just the native C++ type.

virtual DocEntryGetDocEntry (uint16_t group, uint16_t elem)=0
 Gets any type of DocEntry, identified by its (group,elem).

ValEntryGetValEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type ValEntry.

BinEntryGetBinEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type BinEntry.

SeqEntryGetSeqEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type SeqEntry.

bool SetValEntry (std::string const &content, uint16_t group, uint16_t elem)
 Accesses an existing DocEntry (i.e. a Dicom Element) through it's (group, element) and modifies it's content with the given value.

bool SetBinEntry (uint8_t *content, int lgth, uint16_t group, uint16_t elem)
 Accesses an existing DocEntry (i.e. a Dicom Element) through it's (group, element) and modifies it's content with the given value.

bool SetValEntry (std::string const &content, ValEntry *entry)
 Accesses an existing DocEntry (i.e. a Dicom Element) and modifies it's content with the given value.

bool SetBinEntry (uint8_t *content, int lgth, BinEntry *entry)
 Accesses an existing BinEntry (i.e. a Dicom Element) and modifies it's content with the given value.

ValEntryInsertValEntry (std::string const &value, uint16_t group, uint16_t elem, TagName const &vr=GDCM_UNKNOWN)
 Modifies the value of a given Doc Entry (Dicom Element) when it exists. Create it with the given value when unexistant.

BinEntryInsertBinEntry (uint8_t *binArea, int lgth, uint16_t group, uint16_t elem, TagName const &vr=GDCM_UNKNOWN)
 Modifies the value of a given Header Entry (Dicom Element) when it exists. Create it with the given value when unexistant. A copy of the binArea is made to be kept in the Document.

SeqEntryInsertSeqEntry (uint16_t group, uint16_t elem)
 Modifies the value of a given Doc Entry (Dicom Element) when it exists. Creates it when unexistant.

virtual bool IsEmpty ()=0
 tells us if the set contains no entry

virtual bool CheckIfEntryExist (uint16_t group, uint16_t elem)
 Checks if a given Dicom Element exists within the H table.

ValEntryNewValEntry (uint16_t group, uint16_t elem, TagName const &vr=GDCM_UNKNOWN)
 Build a new Val Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

BinEntryNewBinEntry (uint16_t group, uint16_t elem, TagName const &vr=GDCM_UNKNOWN)
 Build a new Bin Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

SeqEntryNewSeqEntry (uint16_t group, uint16_t elem)
 Build a new Seq Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

DictEntryNewVirtualDictEntry (uint16_t group, uint16_t elem, TagName const &vr=GDCM_UNKNOWN, TagName const &vm=GDCM_UNKNOWN, TagName const &name=GDCM_UNKNOWN)
 Request a new virtual dict entry to the dict set.

virtual void Print (std::ostream &os=std::cout, std::string const &indent="")
 Print all the object.

void SetPrintLevel (int level)
 Sets the print level for the Dicom Header Elements.

int GetPrintLevel ()
 Gets the print level for the Dicom Entries.


Protected Member Functions

DictEntryGetDictEntry (uint16_t group, uint16_t elem)
 Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element. The public dictionary has precedence on the shadow one.

DictEntryGetDictEntry (uint16_t group, uint16_t elem, TagName const &vr)
 Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element, and create a new virtual DictEntry if necessary.


Protected Attributes

int PrintLevel
 Amount of printed details for each Dicom Entries : 0 : stands for the least detail level.


Detailed Description

DocEntrySet is an abstract base class for ElementSet and SQItem which are both containers for DocEntries. ElementSet is based on the STL map<> container (see ElementSet::TagHT), as opposed to SQItem which is based on an STL list container (see ListDocEntry). Since the syntax for adding a new element to a map<> or a list<> differ, DocEntrySet is designed as an adapter to unify the interfaces of DocEntrySet and ElementSet. As an illustration of this design, please refer to the implementation of AddEntry (or any pure virtual method) in both derived classes. This adapter unification of interfaces enables the parsing of a DICOM header containing (optionaly heavily nested) sequences to be written recursively [see Document::ParseDES which calls Document::ParseSQ, which in turns calls Document::ParseDES ].

Note:
Developpers should strongly resist to the temptation of adding members to this class since this class is designed as an adapter in the form of an abstract base class.

Definition at line 59 of file gdcmDocEntrySet.h.


Constructor & Destructor Documentation

gdcm::DocEntrySet::DocEntrySet  )  [inline]
 

Canonical Constructor.

Definition at line 63 of file gdcmDocEntrySet.h.

00063 {};

virtual gdcm::DocEntrySet::~DocEntrySet  )  [inline, virtual]
 

Canonical Destructor.

Definition at line 65 of file gdcmDocEntrySet.h.

00065 {};


Member Function Documentation

virtual bool gdcm::DocEntrySet::AddEntry DocEntry Entry  )  [pure virtual]
 

adds any type of entry to the entry set

Implemented in gdcm::ElementSet, and gdcm::SQItem.

Referenced by InsertBinEntry(), InsertSeqEntry(), InsertValEntry(), gdcm::DicomDir::MoveSQItem(), and gdcm::Document::ParseDES().

bool gdcm::DocEntrySet::CheckIfEntryExist uint16_t  group,
uint16_t  elem
[virtual]
 

Checks if a given Dicom Element exists within the H table.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
true is found

Definition at line 434 of file gdcmDocEntrySet.cxx.

References GetDocEntry().

00435 {
00436    return GetDocEntry(group,elem)!=NULL;
00437 }

virtual void gdcm::DocEntrySet::ClearEntry  )  [pure virtual]
 

Remove all Entry in the entry set.

Implemented in gdcm::ElementSet, and gdcm::SQItem.

BinEntry * gdcm::DocEntrySet::GetBinEntry uint16_t  group,
uint16_t  elem
 

Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type BinEntry.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
When present, the corresponding BinEntry.

Definition at line 127 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetDocEntry().

Referenced by GetEntryBinArea(), and SetBinEntry().

00128 {
00129    DocEntry *currentEntry = GetDocEntry(group, elem);
00130    if ( !currentEntry )
00131    {
00132       gdcmWarningMacro( "No corresponding BinEntry " << std::hex << group <<
00133                          "," << elem);
00134       return NULL;
00135    }
00136 
00137    return dynamic_cast<BinEntry*>(currentEntry);
00138 }

DictEntry * gdcm::DocEntrySet::GetDictEntry uint16_t  group,
uint16_t  elem,
TagName const &  vr
[protected]
 

Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element, and create a new virtual DictEntry if necessary.

Parameters:
group group number of the searched DictEntry
elem element number of the searched DictEntry
vr Value Representation to use, if necessary
Returns:
Corresponding DictEntry when it exists, NULL otherwise.

Definition at line 558 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_UNKNOWN, GetDictEntry(), gdcm::DictEntry::GetName(), gdcm::DictEntry::GetVR(), NewVirtualDictEntry(), and gdcm::TagName.

00560 {
00561    DictEntry *dictEntry = GetDictEntry(group,elem);
00562    DictEntry *goodEntry = dictEntry;
00563    std::string goodVR = vr;
00564 
00565    if (elem == 0x0000) goodVR="UL";
00566 
00567    if ( goodEntry )
00568    {
00569       if ( goodVR != goodEntry->GetVR()
00570         && goodVR != GDCM_UNKNOWN )
00571       {
00572          goodEntry = NULL;
00573       }
00574    }
00575 
00576    // Create a new virtual DictEntry if necessary
00577    if (!goodEntry)
00578    {
00579       if (dictEntry)
00580       {
00581          goodEntry = NewVirtualDictEntry(group, elem, goodVR, "FIXME", 
00582                                          dictEntry->GetName() );
00583       }
00584       else
00585       {
00586          goodEntry = NewVirtualDictEntry(group, elem, goodVR);
00587       }
00588    }
00589    return goodEntry;
00590 }

DictEntry * gdcm::DocEntrySet::GetDictEntry uint16_t  group,
uint16_t  elem
[protected]
 

Searches [both] the public [and the shadow dictionary (when they exist)] for the presence of the DictEntry with given group and element. The public dictionary has precedence on the shadow one.

Parameters:
group group number of the searched DictEntry
elem element number of the searched DictEntry
Returns:
Corresponding DictEntry when it exists, NULL otherwise.

Definition at line 534 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and gdcm::Dict::GetEntry().

Referenced by GetDictEntry(), NewBinEntry(), NewSeqEntry(), NewValEntry(), and gdcm::Document::ReadNextDocEntry().

00535 {
00536    DictEntry *found = 0;
00537    Dict *pubDict = Global::GetDicts()->GetDefaultPubDict();
00538    if (!pubDict) 
00539    {
00540       gdcmWarningMacro( "We SHOULD have a default dictionary");
00541    }
00542    else
00543    {
00544       found = pubDict->GetEntry(group, elem);  
00545    }
00546    return found;
00547 }

virtual DocEntry* gdcm::DocEntrySet::GetDocEntry uint16_t  group,
uint16_t  elem
[pure virtual]
 

Gets any type of DocEntry, identified by its (group,elem).

Implemented in gdcm::ElementSet, and gdcm::SQItem.

Referenced by CheckIfEntryExist(), GetBinEntry(), GetEntryLength(), GetEntryValue(), GetEntryVR(), GetSeqEntry(), GetValEntry(), InsertBinEntry(), InsertSeqEntry(), and InsertValEntry().

void * gdcm::DocEntrySet::GetEntryBinArea uint16_t  group,
uint16_t  elem
[virtual]
 

Gets (from Header) a 'non string' element value.

Parameters:
group group number of the Entry
elem element number of the Entry
Returns:
Pointer to the 'non string' area

Definition at line 57 of file gdcmDocEntrySet.cxx.

References gdcm::BinEntry::GetBinArea(), and GetBinEntry().

Referenced by gdcm::PixelReadConvert::GrabInformationsFromFile().

00058 {
00059    BinEntry *entry = GetBinEntry(group, elem);
00060    if( entry )
00061       return entry->GetBinArea();
00062    return 0;
00063 }

int gdcm::DocEntrySet::GetEntryLength uint16_t  group,
uint16_t  elem
[virtual]
 

Searches within Header Entries (Dicom Elements) parsed with the public and private dictionaries for the value length of a given tag..

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element length; -2 if not found

Definition at line 73 of file gdcmDocEntrySet.cxx.

References GetDocEntry(), and gdcm::DocEntry::GetLength().

Referenced by gdcm::DicomDir::SetElement(), and gdcm::File::Write().

00074 {
00075    DocEntry *entry = GetDocEntry(group, elem);
00076    if( entry )
00077       return entry->GetLength();
00078    return -1;
00079 }

std::string gdcm::DocEntrySet::GetEntryValue uint16_t  group,
uint16_t  elem
[virtual]
 

Get the "std::string representable" value of the Dicom entry.

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element value when it exists, and the string GDCM_UNFOUND ("gdcm::Unfound") otherwise.

Definition at line 43 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_UNFOUND, GetDocEntry(), and gdcm::ContentEntry::GetValue().

Referenced by gdcm::SerieHelper::AddFileName(), gdcm::File::AnonymizeFile(), gdcm::Document::Document(), gdcm::File::File(), gdcm::File::GetBitsAllocated(), gdcm::File::GetBitsStored(), gdcm::File::GetHighBitPosition(), gdcm::File::GetImageNumber(), gdcm::File::GetImageOrientationPatient(), gdcm::File::GetLUTNbits(), gdcm::File::GetModality(), gdcm::File::GetNumberOfScalarComponents(), gdcm::File::GetPixelType(), gdcm::File::GetPlanarConfiguration(), gdcm::File::GetRescaleIntercept(), gdcm::File::GetRescaleSlope(), gdcm::File::GetSamplesPerPixel(), gdcm::Document::GetTransferSyntaxName(), gdcm::File::GetXOrigin(), gdcm::File::GetXSize(), gdcm::File::GetXSpacing(), gdcm::File::GetYOrigin(), gdcm::File::GetYSize(), gdcm::File::GetYSpacing(), gdcm::File::GetZOrigin(), gdcm::File::GetZSize(), gdcm::File::GetZSpacing(), gdcm::PixelReadConvert::GrabInformationsFromFile(), gdcm::File::IsMonochrome(), gdcm::File::IsPaletteColor(), gdcm::File::IsReadable(), gdcm::File::IsSignedPixelData(), gdcm::File::IsYBRFull(), gdcm::Document::operator<(), gdcm::DicomDir::SetElement(), and gdcm::File::Write().

00044 {
00045    ContentEntry *entry = dynamic_cast<ContentEntry *>(GetDocEntry(group,elem));
00046    if( entry )
00047       return entry->GetValue();
00048    return GDCM_UNFOUND;
00049 }

std::string gdcm::DocEntrySet::GetEntryVR uint16_t  group,
uint16_t  elem
[virtual]
 

Searches within Header Entries (Dicom Elements) parsed with the public [and private dictionaries] for the element value representation of a given tag.. Obtaining the VR (Value Representation) might be needed by caller to convert the string typed content to caller's native type (think of C++ vs Python). The VR is actually of a higher level of semantics than just the native C++ type.

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element value representation when it exists, and the string GDCM_UNFOUND ("gdcm::Unfound") otherwise.

Definition at line 94 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_UNFOUND, GetDocEntry(), and gdcm::DocEntry::GetVR().

00095 {
00096    DocEntry *entry = GetDocEntry(group, elem);
00097    if( entry )
00098       return entry->GetVR();
00099    return GDCM_UNFOUND;
00100 }

virtual DocEntry* gdcm::DocEntrySet::GetFirstEntry  )  [pure virtual]
 

Gets the first entry of any type of set.

Implemented in gdcm::ElementSet, and gdcm::SQItem.

Referenced by gdcm::DicomDir::MoveSQItem().

virtual DocEntry* gdcm::DocEntrySet::GetNextEntry  )  [pure virtual]
 

Gets the next entry of any type of set.

Implemented in gdcm::ElementSet, and gdcm::SQItem.

int gdcm::Base::GetPrintLevel  )  [inline, inherited]
 

Gets the print level for the Dicom Entries.

Definition at line 48 of file gdcmBase.h.

00048 { return PrintLevel; };

SeqEntry * gdcm::DocEntrySet::GetSeqEntry uint16_t  group,
uint16_t  elem
 

Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type SeqEntry.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
When present, the corresponding SeqEntry.

Definition at line 148 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetDocEntry().

00149 {
00150    DocEntry *currentEntry = GetDocEntry(group, elem);
00151    if ( !currentEntry )
00152    {
00153       gdcmWarningMacro( "No corresponding SeqEntry " << std::hex << group <<
00154                         "," << elem);
00155       return NULL;
00156    }
00157 
00158    return dynamic_cast<SeqEntry*>(currentEntry);
00159 }

ValEntry * gdcm::DocEntrySet::GetValEntry uint16_t  group,
uint16_t  elem
 

Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type ValEntry.

Parameters:
group Group number of the searched Dicom Element
elem Element number of the searched Dicom Element
Returns:
When present, the corresponding ValEntry.

Definition at line 110 of file gdcmDocEntrySet.cxx.

References GetDocEntry().

Referenced by SetValEntry(), and gdcm::File::Write().

00111 {
00112    DocEntry *currentEntry = GetDocEntry(group, elem);
00113    if ( !currentEntry )
00114       return NULL;
00115 
00116    return dynamic_cast<ValEntry*>(currentEntry);
00117 }

BinEntry * gdcm::DocEntrySet::InsertBinEntry uint8_t *  binArea,
int  lgth,
uint16_t  group,
uint16_t  elem,
TagName const &  vr = GDCM_UNKNOWN
 

Modifies the value of a given Header Entry (Dicom Element) when it exists. Create it with the given value when unexistant. A copy of the binArea is made to be kept in the Document.

Parameters:
binArea (binary) value to be set
lgth length of the Bin Area we want to set
group Group number of the Entry
elem Element number of the Entry
vr V(alue) R(epresentation) of the Entry -if private Entry-
Returns:
pointer to the modified/created Header Entry (NULL when creation failed).

Definition at line 309 of file gdcmDocEntrySet.cxx.

References AddEntry(), gdcmWarningMacro, GetDocEntry(), gdcm::DocEntry::GetVR(), NewBinEntry(), RemoveEntry(), SetBinEntry(), and gdcm::TagName.

Referenced by gdcm::File::InitializeDefaultFile(), and gdcm::FileHelper::InsertBinEntry().

00312 {
00313    BinEntry *binEntry = 0;
00314    DocEntry *currentEntry = GetDocEntry( group, elem );
00315 
00316    // Verify the currentEntry
00317    if (currentEntry)
00318    {
00319       binEntry = dynamic_cast<BinEntry *>(currentEntry);
00320 
00321       // Verify the VR
00322       if( binEntry )
00323          if( binEntry->GetVR()!=vr )
00324             binEntry = NULL;
00325 
00326       // if currentEntry doesn't correspond to the requested valEntry
00327       if( !binEntry)
00328       {
00329          if( !RemoveEntry(currentEntry) )
00330          {
00331             gdcmWarningMacro( "Removal of previous DocEntry failed.");
00332 
00333             return NULL;
00334          }
00335       }
00336    }
00337 
00338    // Create a new binEntry if necessary
00339    if( !binEntry)
00340    {
00341       binEntry = NewBinEntry(group, elem, vr);
00342 
00343       if ( !AddEntry(binEntry) )
00344       {
00345          gdcmWarningMacro( "AddEntry failed allthough this is a creation.");
00346 
00347          delete binEntry;
00348          return NULL;
00349       }
00350    }
00351 
00352    // Set the binEntry value
00353    uint8_t *tmpArea;
00354    if( lgth>0 && binArea )
00355    {
00356       tmpArea = new uint8_t[lgth];
00357       memcpy(tmpArea,binArea,lgth);
00358    }
00359    else
00360    {
00361       tmpArea = 0;
00362    }
00363    if( !SetBinEntry(tmpArea,lgth,binEntry) )
00364    {
00365       if( tmpArea )
00366       {
00367          delete[] tmpArea;
00368       }
00369    }
00370 
00371    return binEntry;
00372 }  

SeqEntry * gdcm::DocEntrySet::InsertSeqEntry uint16_t  group,
uint16_t  elem
 

Modifies the value of a given Doc Entry (Dicom Element) when it exists. Creates it when unexistant.

Parameters:
group Group number of the Entry
elem Element number of the Entry
Returns:
pointer to the modified/created SeqEntry (NULL when creation failed).

Definition at line 382 of file gdcmDocEntrySet.cxx.

References AddEntry(), gdcmWarningMacro, GetDocEntry(), NewSeqEntry(), and RemoveEntry().

Referenced by gdcm::FileHelper::InsertSeqEntry().

00383 {
00384    SeqEntry *seqEntry = 0;
00385    DocEntry *currentEntry = GetDocEntry( group, elem );
00386 
00387    // Verify the currentEntry
00388    if( currentEntry )
00389    {
00390       seqEntry = dynamic_cast<SeqEntry *>(currentEntry);
00391 
00392       // Verify the VR
00393       if( seqEntry )
00394          seqEntry = NULL;
00395 
00396       // if currentEntry doesn't correspond to the requested seqEntry
00397       if( !seqEntry )
00398       {
00399          if (!RemoveEntry(currentEntry))
00400          {
00401             gdcmWarningMacro( "Removal of previous DocEntry failed.");
00402 
00403             return NULL;
00404          }
00405       }
00406    }
00407    // Create a new seqEntry if necessary
00408    if( !seqEntry )
00409    {
00410       seqEntry = NewSeqEntry(group, elem);
00411 
00412       if( !AddEntry(seqEntry) )
00413       {
00414          gdcmWarningMacro( "AddEntry failed allthough this is a creation.");
00415 
00416          delete seqEntry;
00417          return NULL;
00418       }
00419    }
00420 
00421    // TODO : Find a trick to insert a SequenceDelimitationItem 
00422         //       in the SeqEntry, at the end.
00423    return seqEntry;
00424 } 

ValEntry * gdcm::DocEntrySet::InsertValEntry std::string const &  value,
uint16_t  group,
uint16_t  elem,
TagName const &  vr = GDCM_UNKNOWN
 

Modifies the value of a given Doc Entry (Dicom Element) when it exists. Create it with the given value when unexistant.

Parameters:
value (string) Value to be set
group Group number of the Entry
elem Element number of the Entry
vr V(alue) R(epresentation) of the Entry -if private Entry-
Returns:
pointer to the modified/created Header Entry (NULL when creation failed).

Definition at line 250 of file gdcmDocEntrySet.cxx.

References AddEntry(), gdcmWarningMacro, GetDocEntry(), gdcm::DocEntry::GetVR(), NewValEntry(), RemoveEntry(), SetValEntry(), and gdcm::TagName.

Referenced by gdcm::File::InitializeDefaultFile(), gdcm::FileHelper::InsertValEntry(), and gdcm::File::Write().

00253 {
00254    ValEntry *valEntry = 0;
00255    DocEntry *currentEntry = GetDocEntry( group, elem );
00256    
00257    if (currentEntry)
00258    {
00259       valEntry = dynamic_cast<ValEntry *>(currentEntry);
00260 
00261       // Verify the VR
00262       if( valEntry )
00263          if( valEntry->GetVR()!=vr )
00264             valEntry = NULL;
00265 
00266       // if currentEntry doesn't correspond to the requested valEntry
00267       if( !valEntry)
00268       {
00269          if( !RemoveEntry(currentEntry) )
00270          {
00271             gdcmWarningMacro( "Removal of previous DocEntry failed.");
00272 
00273             return NULL;
00274          }
00275       }
00276    }
00277 
00278    // Create a new valEntry if necessary
00279    if( !valEntry )
00280    {
00281       valEntry = NewValEntry( group, elem, vr );
00282 
00283       if ( !AddEntry(valEntry) )
00284       {
00285          gdcmWarningMacro("AddEntry failed although this is a creation.");
00286 
00287          delete valEntry;
00288          return NULL;
00289       }
00290    }
00291 
00292    // Set the binEntry value
00293    SetValEntry(value, valEntry); // The std::string value
00294    return valEntry;
00295 }

virtual bool gdcm::DocEntrySet::IsEmpty  )  [pure virtual]
 

tells us if the set contains no entry

Implemented in gdcm::ElementSet, and gdcm::SQItem.

BinEntry * gdcm::DocEntrySet::NewBinEntry uint16_t  group,
uint16_t  elem,
TagName const &  vr = GDCM_UNKNOWN
 

Build a new Bin Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

Parameters:
group group number of the new Entry
elem element number of the new Entry
vr VR of the new Entry

Definition at line 471 of file gdcmDocEntrySet.cxx.

References gdcmAssertMacro, gdcmWarningMacro, GetDictEntry(), and gdcm::TagName.

Referenced by gdcm::FileHelper::CopyBinEntry(), InsertBinEntry(), and gdcm::Document::ReadNextDocEntry().

00473 {
00474    DictEntry *dictEntry = GetDictEntry(group, elem, vr);
00475    gdcmAssertMacro(dictEntry);
00476 
00477    BinEntry *newEntry = new BinEntry(dictEntry);
00478    if (!newEntry) 
00479    {
00480       gdcmWarningMacro( "Failed to allocate BinEntry");
00481       return 0;
00482    }
00483    return newEntry;
00484 }

SeqEntry * gdcm::DocEntrySet::NewSeqEntry uint16_t  group,
uint16_t  elem
 

Build a new Seq Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

Parameters:
group group number of the new Entry
elem element number of the new Entry

Definition at line 493 of file gdcmDocEntrySet.cxx.

References gdcmAssertMacro, gdcmWarningMacro, and GetDictEntry().

Referenced by InsertSeqEntry(), and gdcm::Document::ReadNextDocEntry().

00494 {
00495    DictEntry *dictEntry = GetDictEntry(group, elem, "SQ");
00496    gdcmAssertMacro(dictEntry);
00497 
00498    SeqEntry *newEntry = new SeqEntry( dictEntry );
00499    if (!newEntry)
00500    {
00501       gdcmWarningMacro( "Failed to allocate SeqEntry");
00502       return 0;
00503    }
00504    return newEntry;
00505 }

ValEntry * gdcm::DocEntrySet::NewValEntry uint16_t  group,
uint16_t  elem,
TagName const &  vr = GDCM_UNKNOWN
 

Build a new Val Entry from all the low level arguments. Check for existence of dictionary entry, and build a default one when absent.

Parameters:
group group number of the new Entry
elem element number of the new Entry
vr VR of the new Entry

Definition at line 447 of file gdcmDocEntrySet.cxx.

References gdcmAssertMacro, gdcmWarningMacro, GetDictEntry(), and gdcm::TagName.

Referenced by gdcm::FileHelper::CopyValEntry(), InsertValEntry(), and gdcm::Document::ReadNextDocEntry().

00449 {
00450    DictEntry *dictEntry = GetDictEntry(group, elem, vr);
00451    gdcmAssertMacro(dictEntry);
00452 
00453    ValEntry *newEntry = new ValEntry(dictEntry);
00454    if (!newEntry) 
00455    {
00456       gdcmWarningMacro( "Failed to allocate ValEntry");
00457       return 0;
00458    }
00459    return newEntry;
00460 }

DictEntry * gdcm::DocEntrySet::NewVirtualDictEntry uint16_t  group,
uint16_t  elem,
TagName const &  vr = GDCM_UNKNOWN,
TagName const &  vm = GDCM_UNKNOWN,
TagName const &  name = GDCM_UNKNOWN
 

Request a new virtual dict entry to the dict set.

Parameters:
group group number of the underlying DictEntry
elem element number of the underlying DictEntry
vr VR (Value Representation) of the underlying DictEntry
vm VM (Value Multiplicity) of the underlying DictEntry
name english name

Definition at line 515 of file gdcmDocEntrySet.cxx.

References gdcm::TagName.

Referenced by gdcm::File::File(), and GetDictEntry().

00519 {
00520    return Global::GetDicts()->NewVirtualDictEntry(group,elem,vr,vm,name);
00521 }

void gdcm::Base::Print std::ostream &  os = std::cout,
std::string const &  indent = ""
[virtual, inherited]
 

Print all the object.

Parameters:
os The output stream to be written to.
indent Indentation string to be prepended during printing

Reimplemented in gdcm::BinEntry, gdcm::DicomDir, gdcm::DicomDirImage, gdcm::DicomDirMeta, gdcm::DicomDirPatient, gdcm::DicomDirSerie, gdcm::DicomDirStudy, gdcm::Dict, gdcm::DictEntry, gdcm::DictSet, gdcm::DocEntry, gdcm::ElementSet, gdcm::FileHelper, gdcm::PixelReadConvert, gdcm::SeqEntry, gdcm::SQItem, and gdcm::ValEntry.

Definition at line 58 of file gdcmBase.cxx.

00059 {
00060 }

virtual bool gdcm::DocEntrySet::RemoveEntry DocEntry EntryToRemove  )  [pure virtual]
 

Removes any type of entry out of the entry set, and destroys it.

Implemented in gdcm::ElementSet, and gdcm::SQItem.

Referenced by InsertBinEntry(), InsertSeqEntry(), and InsertValEntry().

virtual bool gdcm::DocEntrySet::RemoveEntryNoDestroy DocEntry EntryToRemove  )  [pure virtual]
 

Removes any type of entry out of the entry set, DOESN'T destroy it.

Implemented in gdcm::ElementSet, and gdcm::SQItem.

Referenced by gdcm::DicomDir::MoveSQItem().

bool gdcm::DocEntrySet::SetBinEntry uint8_t *  content,
int  lgth,
BinEntry entry
 

Accesses an existing BinEntry (i.e. a Dicom Element) and modifies it's content with the given value.

Parameters:
content new value (void* -> uint8_t*) to substitute with
entry Entry to be modified
lgth new value length

Definition at line 228 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_BINLOADED, gdcm::BinEntry::SetBinArea(), gdcm::DocEntry::SetLength(), and gdcm::ContentEntry::SetValue().

00229 {
00230    if(entry)
00231    {
00232       entry->SetBinArea(content);  
00233       entry->SetLength(lgth);
00234       entry->SetValue(GDCM_BINLOADED);
00235       return true;
00236    }
00237    return false;
00238 }

bool gdcm::DocEntrySet::SetBinEntry uint8_t *  content,
int  lgth,
uint16_t  group,
uint16_t  elem
 

Accesses an existing DocEntry (i.e. a Dicom Element) through it's (group, element) and modifies it's content with the given value.

Parameters:
content new value (void* -> uint8_t*) to substitute with
lgth new value length
group group number of the Dicom Element to modify
elem element number of the Dicom Element to modify

Definition at line 191 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetBinEntry().

Referenced by InsertBinEntry(), and gdcm::FileHelper::SetBinEntry().

00193 {
00194    BinEntry *entry = GetBinEntry(group, elem);
00195    if (!entry )
00196    {
00197       gdcmWarningMacro( "No corresponding ValEntry " << std::hex << group <<
00198                         "," << elem << " element (try promotion first).");
00199       return false;
00200    }
00201 
00202    return SetBinEntry(content,lgth,entry);
00203 } 

void gdcm::Base::SetPrintLevel int  level  )  [inline, inherited]
 

Sets the print level for the Dicom Header Elements.

Note:
0 for Light Print; 1 for 'medium' Print, 2 for Heavy

Definition at line 45 of file gdcmBase.h.

Referenced by gdcm::SQItem::Print(), gdcm::SeqEntry::Print(), gdcm::FileHelper::Print(), gdcm::ElementSet::Print(), and gdcm::DicomDir::Print().

00045 { PrintLevel = level; };

bool gdcm::DocEntrySet::SetValEntry std::string const &  content,
ValEntry entry
 

Accesses an existing DocEntry (i.e. a Dicom Element) and modifies it's content with the given value.

Parameters:
content new value (string) to substitute with
entry Entry to be modified

Definition at line 211 of file gdcmDocEntrySet.cxx.

References gdcm::ValEntry::SetValue().

00212 {
00213    if(entry)
00214    {
00215       entry->SetValue(content);
00216       return true;
00217    }
00218    return false;
00219 }

bool gdcm::DocEntrySet::SetValEntry std::string const &  content,
uint16_t  group,
uint16_t  elem
 

Accesses an existing DocEntry (i.e. a Dicom Element) through it's (group, element) and modifies it's content with the given value.

Parameters:
content new value (string) to substitute with
group group number of the Dicom Element to modify
elem element number of the Dicom Element to modify

Definition at line 169 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetValEntry().

Referenced by gdcm::File::AnonymizeFile(), gdcm::Document::Document(), InsertValEntry(), gdcm::FileHelper::SetValEntry(), and gdcm::File::Write().

00171 {
00172    ValEntry *entry = GetValEntry(group, elem);
00173    if (!entry )
00174    {
00175       gdcmWarningMacro( "No corresponding ValEntry " << std::hex << group <<
00176                          "," << elem << " element (try promotion first).");
00177       return false;
00178    }
00179    return SetValEntry(content,entry);
00180 }

virtual void gdcm::DocEntrySet::WriteContent std::ofstream *  fp,
FileType  filetype
[pure virtual]
 

write any type of entry to the entry set

Implemented in gdcm::DicomDirMeta, gdcm::DicomDirPatient, gdcm::DicomDirSerie, gdcm::DicomDirStudy, gdcm::Document, gdcm::ElementSet, and gdcm::SQItem.


Member Data Documentation

int gdcm::Base::PrintLevel [protected, inherited]
 

Amount of printed details for each Dicom Entries : 0 : stands for the least detail level.

Definition at line 53 of file gdcmBase.h.

Referenced by gdcm::Base::Base().


The documentation for this class was generated from the following files:
Generated on Thu Feb 10 22:18:08 2005 for gdcm by doxygen 1.3.6