Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | 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. More...

#include <gdcmDocEntrySet.h>

Inheritance diagram for gdcm::DocEntrySet:

Inheritance graph
[legend]
Collaboration diagram for gdcm::DocEntrySet:

Collaboration graph
[legend]
List of all members.

Public Member Functions

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 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 GetEntryString (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 GetEntryForcedAsciiValue (uint16_t group, uint16_t elem)
 Return the value of the DataEntry if it's "std::string representable".
virtual DocEntryGetDocEntry (uint16_t group, uint16_t elem)=0
 Gets any type of DocEntry, identified by its (group,elem).
DataEntryGetDataEntry (uint16_t group, uint16_t elem)
 Same as Document::GetDocEntry except it only returns a result when the corresponding entry is of type DataEntry.
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 SetEntryString (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 SetEntryBinArea (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 SetEntryString (std::string const &content, DataEntry *entry)
 Accesses an existing DocEntry (i.e. a Dicom Element) and modifies it's content with the given value.
bool SetEntryBinArea (uint8_t *content, int lgth, DataEntry *entry)
 Accesses an existing DataEntry (i.e. a Dicom Element) and modifies it's content with the given value.
DataEntryInsertEntryString (std::string const &value, uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 Modifies the value of a given Doc Entry (Dicom Element) when it exists. Create it with the given value when unexistant.
DataEntryInsertEntryBinArea (uint8_t *binArea, int lgth, uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 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.
DataEntryNewDataEntry (uint16_t group, uint16_t elem, VRKey const &vr=GDCM_VRUNKNOWN)
 Build a new Val 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.
void Delete ()
 Delete the object.
void Register ()
 Register the object.
void Unregister ()
 Unregister the object.
const unsigned long & GetRefCount () const
 Get the reference counting.
virtual void Print (std::ostream &=std::cout, std::string const &="")
 Printer.
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

 DocEntrySet ()
 Canonical Constructor.
virtual ~DocEntrySet ()
 Canonical Destructor.
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(s), if any.
DictEntryGetDictEntry (uint16_t group, uint16_t elem, VRKey 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

DocEntryPreviousDocEntry
 To be able to backtrack (Private Sequence, Implicit VR related pb).
int PrintLevel
 Amount of printed details for each Dicom Entries : 0 : stands for the least detail level.

Private Member Functions

 gdcmTypeMacro (DocEntrySet)

Detailed Description

DocEntrySet is an abstract base class for ElementSet and SQItem which are both containers for DocEntries.

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  )  [protected]
 

Canonical Constructor.

Definition at line 34 of file gdcmDocEntrySet.cxx.

References PreviousDocEntry.

00035 { 
00036    PreviousDocEntry = 0;
00037 }

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

Canonical Destructor.

Definition at line 117 of file gdcmDocEntrySet.h.

00117 {}


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 InsertEntryBinArea(), InsertEntryString(), InsertSeqEntry(), 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 430 of file gdcmDocEntrySet.cxx.

References GetDocEntry().

00431 {
00432    return GetDocEntry(group,elem)!=NULL;
00433 }

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

Remove all Entry in the entry set.

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

void gdcm::RefCounter::Delete  )  [inline, inherited]
 

Delete the object.

Remarks:
The object is deleted only if its reference counting is to zero

Definition at line 40 of file gdcmRefCounter.h.

Referenced by gdcm::SerieHelper::AddFileName(), gdcm::Document::Backtrack(), gdcm::FileHelper::CheckMandatoryElements(), gdcm::FileHelper::CheckMandatoryEntry(), gdcm::FileHelper::CopyMandatoryEntry(), gdcm::DicomDir::CreateDicomDirChainedList(), gdcm::File::DoTheLoadingJob(), gdcm::Dict::DoTheLoadingJob(), gdcm::DicomDirObject::FillObject(), InsertEntryBinArea(), InsertEntryString(), InsertSeqEntry(), gdcm::DicomDir::NewMeta(), gdcm::DicomDirStudy::NewVisit(), gdcm::Document::ParseDES(), gdcm::Document::ParseSQ(), gdcm::Document::ReadNextDocEntry(), gdcm::DicomDir::SetElement(), gdcm::FileHelper::SetMandatoryEntry(), gdcm::FileHelper::SetWriteFileTypeToExplicitVR(), gdcm::FileHelper::SetWriteFileTypeToImplicitVR(), gdcm::FileHelper::SetWriteFileTypeToJPEG(), gdcm::FileHelper::SetWriteToLibido(), gdcm::FileHelper::SetWriteToNoLibido(), gdcm::FileHelper::SetWriteToRaw(), gdcm::FileHelper::SetWriteToRGB(), gdcm::DicomDir::~DicomDir(), and gdcm::Global::~Global().

00040 { Unregister(); }

gdcm::DocEntrySet::gdcmTypeMacro DocEntrySet   )  [private]
 

DataEntry * gdcm::DocEntrySet::GetDataEntry uint16_t  group,
uint16_t  elem
 

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

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

Definition at line 136 of file gdcmDocEntrySet.cxx.

References GetDocEntry().

Referenced by gdcm::FileHelper::CheckMandatoryElements(), gdcm::FileHelper::CheckMandatoryEntry(), gdcm::Document::DoTheLoadingDocumentJob(), gdcm::File::GetBitsAllocated(), gdcm::File::GetBitsStored(), GetEntryBinArea(), gdcm::File::GetHighBitPosition(), gdcm::File::GetPlanarConfiguration(), gdcm::File::GetRescaleIntercept(), gdcm::File::GetRescaleSlope(), gdcm::File::GetSamplesPerPixel(), 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::File::IsSignedPixelData(), gdcm::ElementSet::Print(), SetEntryBinArea(), SetEntryString(), gdcm::FileHelper::SetWriteToLibido(), gdcm::FileHelper::SetWriteToNoLibido(), gdcm::FileHelper::Write(), gdcm::File::Write(), and gdcm::DicomDirMeta::WriteContent().

00137 {
00138    DocEntry *currentEntry = GetDocEntry(group, elem);
00139    if ( !currentEntry )
00140       return NULL;
00141 
00142    return dynamic_cast<DataEntry*>(currentEntry);
00143 }

DictEntry * gdcm::DocEntrySet::GetDictEntry uint16_t  group,
uint16_t  elem,
VRKey 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 V(alue) R(epresentation) to use, if necessary
Returns:
Corresponding DictEntry when it exists, NULL otherwise.
Remarks:
The returned DictEntry is registered

Definition at line 520 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_VRUNKNOWN, GetDictEntry(), gdcm::DicomEntry::GetVR(), gdcm::DictEntry::New(), gdcm::RefCounter::Register(), and gdcm::RefCounter::Unregister().

00522 {
00523    DictEntry *dictEntry = GetDictEntry(group,elem);
00524    DictEntry *goodEntry = dictEntry;
00525    VRKey goodVR = vr;
00526 
00527    if (elem == 0x0000) 
00528       goodVR="UL";
00529 
00530    if ( goodEntry )
00531    {
00532       if ( goodVR != goodEntry->GetVR()
00533         && goodVR != GDCM_VRUNKNOWN )
00534       {
00535          goodEntry = NULL;
00536       }
00537       dictEntry->Unregister();
00538    }
00539 
00540    // Create a new virtual DictEntry if necessary
00541    if (!goodEntry)
00542    {
00543       if (dictEntry)
00544       {
00545          goodEntry = DictEntry::New(group, elem, goodVR, "FIXME", 
00546                                     dictEntry->GetName() );
00547       }
00548       else
00549       {
00550          goodEntry = DictEntry::New(group, elem, goodVR);
00551       }
00552    }
00553    else
00554    {
00555       goodEntry->Register();
00556    }
00557    return goodEntry;
00558 }

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(s), if any.

Parameters:
group Group number of the searched DictEntry
elem Element number of the searched DictEntry
Returns:
Corresponding DictEntry when it exists, NULL otherwise.
Remarks:
The returned DictEntry is registered when existing

Definition at line 493 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, gdcm::DictSet::GetDefaultPubDict(), gdcm::Global::GetDicts(), gdcm::Dict::GetEntry(), and gdcm::RefCounter::Register().

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

00494 {
00495    DictEntry *found = 0;
00496    Dict *pubDict = Global::GetDicts()->GetDefaultPubDict();
00497    if (!pubDict) 
00498    {
00499       gdcmWarningMacro( "We SHOULD have a default dictionary");
00500    }
00501    else
00502    {
00503       found = pubDict->GetEntry(group, elem);
00504       if( found )
00505          found->Register();
00506    }
00507    return found;
00508 }

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(), GetDataEntry(), GetEntryForcedAsciiValue(), GetEntryLength(), GetEntryString(), GetSeqEntry(), InsertEntryBinArea(), InsertEntryString(), and InsertSeqEntry().

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 69 of file gdcmDocEntrySet.cxx.

References gdcm::DataEntry::GetBinArea(), and GetDataEntry().

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

00070 {
00071    DataEntry *entry = GetDataEntry(group, elem);
00072    if ( entry )
00073       return entry->GetBinArea();
00074    return 0;
00075 }

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

Return the value of the DataEntry if it's "std::string representable".

Parameters:
group Group number of the searched tag.
elem Element number of the searched tag.
Returns:
Corresponding element value when it's "std::string representable" and the string GDCM_NOTASCII otherwise.

Definition at line 84 of file gdcmDocEntrySet.cxx.

References gdcm::Util::CreateCleanString(), gdcm::GDCM_NOTASCII, gdcm::GDCM_NOTLOADED, gdcm::GDCM_UNFOUND, gdcm::GDCM_UNREAD, gdcm::DataEntry::GetBinArea(), GetDocEntry(), gdcm::DocEntry::GetLength(), gdcm::DataEntry::GetString(), gdcm::DocEntry::GetVR(), gdcm::Global::GetVR(), gdcm::Util::IsCleanArea(), gdcm::DataEntry::IsNotLoaded(), gdcm::DataEntry::IsUnfound(), gdcm::DataEntry::IsUnread(), and gdcm::VR::IsVROfStringRepresentable().

00085 {
00086    DocEntry *d = GetDocEntry(group,elem);
00087    if ( !d )
00088       return GDCM_UNFOUND;
00089 
00090    DataEntry *de = dynamic_cast<DataEntry *>(d);
00091    if ( de )
00092    {
00093       if( de->IsNotLoaded() )
00094          return GDCM_NOTLOADED;
00095       if( de->IsUnfound() )
00096          return GDCM_UNFOUND;
00097       if( de->IsUnread() )
00098          return GDCM_UNREAD;
00099    }
00100 
00101    if( Global::GetVR()->IsVROfStringRepresentable( de->GetVR() ) )
00102       return de->GetString();
00103    else
00104    {
00105       uint8_t *a = de->GetBinArea();
00106       if( Util::IsCleanArea(a, de->GetLength()) )
00107          return  Util::CreateCleanString(a, de->GetLength());
00108    }
00109    return GDCM_NOTASCII;
00110 }

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 120 of file gdcmDocEntrySet.cxx.

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

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

00121 {
00122    DocEntry *entry = GetDocEntry(group, elem);
00123    if ( entry )
00124       return entry->GetLength();
00125    return -1;
00126 }

std::string gdcm::DocEntrySet::GetEntryString 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 otherwise.

Definition at line 47 of file gdcmDocEntrySet.cxx.

References gdcm::GDCM_NOTLOADED, gdcm::GDCM_UNFOUND, gdcm::GDCM_UNREAD, GetDocEntry(), gdcm::DataEntry::GetString(), gdcm::DataEntry::IsNotLoaded(), gdcm::DataEntry::IsUnfound(), and gdcm::DataEntry::IsUnread().

Referenced by gdcm::SerieHelper::AddFileName(), gdcm::File::AnonymizeFile(), gdcm::FileHelper::CheckMandatoryElements(), gdcm::Document::DoTheLoadingDocumentJob(), gdcm::File::DoTheLoadingJob(), gdcm::File::GetImageNumber(), gdcm::File::GetImageOrientationPatient(), gdcm::File::GetLUTNbits(), gdcm::File::GetModality(), gdcm::File::GetNumberOfScalarComponents(), gdcm::File::GetNumberOfScalarComponentsRaw(), gdcm::File::GetPixelSize(), gdcm::File::GetPixelType(), gdcm::Document::GetTransferSyntaxName(), gdcm::PixelReadConvert::GrabInformationsFromFile(), gdcm::File::IsMonochrome(), gdcm::File::IsMonochrome1(), gdcm::File::IsPaletteColor(), gdcm::File::IsReadable(), gdcm::File::IsYBRFull(), gdcm::Document::operator<(), and gdcm::DicomDir::SetElement().

00048 {
00049    DataEntry *entry = dynamic_cast<DataEntry *>(GetDocEntry(group,elem));
00050    if ( entry )
00051    {
00052       if( entry->IsNotLoaded() )
00053          return GDCM_NOTLOADED;
00054       if( entry->IsUnfound() )
00055          return GDCM_UNFOUND;
00056       if( entry->IsUnread() )
00057          return GDCM_UNREAD;
00058       return entry->GetString();
00059    }
00060    return GDCM_UNFOUND;
00061 }

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 50 of file gdcmBase.h.

00050 { return PrintLevel; }

const unsigned long& gdcm::RefCounter::GetRefCount  )  const [inline, inherited]
 

Get the reference counting.

Returns:
Reference count

Definition at line 57 of file gdcmRefCounter.h.

00058    {
00059       return RefCount;
00060    }

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 153 of file gdcmDocEntrySet.cxx.

References GetDocEntry().

Referenced by gdcm::Document::DoTheLoadingDocumentJob().

00154 {
00155    DocEntry *currentEntry = GetDocEntry(group, elem);
00156    if ( !currentEntry )
00157       return NULL;
00158       
00159    return dynamic_cast<SeqEntry*>(currentEntry);
00160 }

DataEntry * gdcm::DocEntrySet::InsertEntryBinArea uint8_t *  binArea,
int  lgth,
uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
 

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 308 of file gdcmDocEntrySet.cxx.

References AddEntry(), gdcm::RefCounter::Delete(), gdcmWarningMacro, GetDocEntry(), gdcm::DocEntry::GetVR(), NewDataEntry(), RemoveEntry(), and SetEntryBinArea().

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

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

DataEntry * gdcm::DocEntrySet::InsertEntryString std::string const &  value,
uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
 

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(), gdcm::RefCounter::Delete(), gdcmWarningMacro, GetDocEntry(), gdcm::DocEntry::GetVR(), NewDataEntry(), RemoveEntry(), and SetEntryString().

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

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

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 380 of file gdcmDocEntrySet.cxx.

References AddEntry(), gdcm::RefCounter::Delete(), gdcmWarningMacro, GetDocEntry(), NewSeqEntry(), and RemoveEntry().

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

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

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

tells us if the set contains no entry

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

DataEntry * gdcm::DocEntrySet::NewDataEntry uint16_t  group,
uint16_t  elem,
VRKey const &  vr = GDCM_VRUNKNOWN
 

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 V(alue) R(epresentation) of the new Entry
Remarks:
The user of this method must destroy the DataEntry when unused

Definition at line 444 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, GetDictEntry(), gdcm::DataEntry::New(), and gdcm::RefCounter::Unregister().

Referenced by gdcm::FileHelper::CopyDataEntry(), InsertEntryBinArea(), InsertEntryString(), and gdcm::Document::ReadNextDocEntry().

00446 {
00447    DictEntry *dictEntry = GetDictEntry(group, elem, vr);
00448 
00449    DataEntry *newEntry = DataEntry::New(dictEntry);
00450    dictEntry->Unregister(); // GetDictEntry register it
00451    if (!newEntry) 
00452    {
00453       gdcmWarningMacro( "Failed to allocate DataEntry");
00454       return 0;
00455    }
00456    return newEntry;
00457 }

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
Remarks:
The user of this method must destroy the SeqEntry when unused

Definition at line 467 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, GetDictEntry(), gdcm::SeqEntry::New(), and gdcm::RefCounter::Unregister().

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

00468 {
00469    DictEntry *dictEntry = GetDictEntry(group, elem, "SQ");
00470 
00471    SeqEntry *newEntry = SeqEntry::New( dictEntry );
00472    dictEntry->Unregister(); // GetDictEntry register it
00473    if (!newEntry)
00474    {
00475       gdcmWarningMacro( "Failed to allocate SeqEntry");
00476       return 0;
00477    }
00478    return newEntry;
00479 }

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

Printer.

Reimplemented in gdcm::DataEntry, gdcm::DicomDir, gdcm::DicomDirElement, gdcm::DicomDirImage, gdcm::DicomDirMeta, gdcm::DicomDirPatient, gdcm::DicomDirSerie, gdcm::DicomDirStudy, gdcm::DicomDirVisit, gdcm::DicomEntry, gdcm::Dict, gdcm::DictEntry, gdcm::DictGroupName, gdcm::DictSet, gdcm::DocEntry, gdcm::ElementSet, gdcm::FileHelper, gdcm::PixelReadConvert, gdcm::SeqEntry, gdcm::SerieHelper, gdcm::SQItem, and gdcm::VR.

Definition at line 42 of file gdcmBase.h.

00043                                                {};

void gdcm::RefCounter::Register  )  [inline, inherited]
 

Register the object.

Remarks:
It increments the reference counting

Definition at line 45 of file gdcmRefCounter.h.

Referenced by gdcm::SQItem::AddEntry(), gdcm::ElementSet::AddEntry(), gdcm::Dict::AddEntry(), gdcm::SeqEntry::AddSQItem(), gdcm::DocEntry::DocEntry(), gdcm::FileHelper::FileHelper(), GetDictEntry(), gdcm::DocEntryArchive::Push(), gdcm::Dict::ReplaceEntry(), and gdcm::SeqEntry::SetDelimitationItem().

00045 { RefCount++; }

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 InsertEntryBinArea(), InsertEntryString(), InsertSeqEntry(), and gdcm::DicomDir::MoveSQItem().

bool gdcm::DocEntrySet::SetEntryBinArea uint8_t *  content,
int  lgth,
DataEntry entry
 

Accesses an existing DataEntry (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 229 of file gdcmDocEntrySet.cxx.

References gdcm::DataEntry::SetBinArea(), and gdcm::DocEntry::SetLength().

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

bool gdcm::DocEntrySet::SetEntryBinArea 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 192 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetDataEntry().

Referenced by InsertEntryBinArea(), and gdcm::FileHelper::SetEntryBinArea().

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

bool gdcm::DocEntrySet::SetEntryString std::string const &  content,
DataEntry 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 212 of file gdcmDocEntrySet.cxx.

References gdcm::DataEntry::SetString().

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

bool gdcm::DocEntrySet::SetEntryString 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 170 of file gdcmDocEntrySet.cxx.

References gdcmWarningMacro, and GetDataEntry().

Referenced by gdcm::File::AnonymizeFile(), gdcm::Document::DoTheLoadingDocumentJob(), InsertEntryString(), and gdcm::FileHelper::SetEntryString().

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

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 Print

Definition at line 47 of file gdcmBase.h.

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

00047 { PrintLevel = level; }

void gdcm::RefCounter::Unregister  )  [inline, inherited]
 

Unregister the object.

Remarks:
It decrements the reference counting

Definition at line 49 of file gdcmRefCounter.h.

Referenced by gdcm::SeqEntry::ClearSQItem(), GetDictEntry(), NewDataEntry(), NewSeqEntry(), gdcm::Document::ReadNextDocEntry(), gdcm::SQItem::RemoveEntry(), gdcm::ElementSet::RemoveEntry(), gdcm::SeqEntry::SetDelimitationItem(), gdcm::DocEntry::~DocEntry(), and gdcm::FileHelper::~FileHelper().

00050    {
00051       RefCount--;
00052       if(RefCount<=0)
00053          delete this;
00054    }

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

DocEntry* gdcm::DocEntrySet::PreviousDocEntry [protected]
 

To be able to backtrack (Private Sequence, Implicit VR related pb).

Definition at line 124 of file gdcmDocEntrySet.h.

Referenced by gdcm::Document::Backtrack(), DocEntrySet(), and gdcm::Document::ParseDES().

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

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

Definition at line 55 of file gdcmBase.h.

Referenced by gdcm::SQItem::Print(), gdcm::SeqEntry::Print(), gdcm::FileHelper::Print(), gdcm::ElementSet::Print(), gdcm::DocEntry::Print(), gdcm::DictEntry::Print(), gdcm::DicomDirStudy::Print(), gdcm::DicomDirSerie::Print(), gdcm::DicomDirPatient::Print(), gdcm::DicomDirMeta::Print(), gdcm::DicomDir::Print(), and gdcm::DataEntry::Print().


The documentation for this class was generated from the following files:
Generated on Fri Nov 18 15:58:29 2005 for gdcm by  doxygen 1.4.4