typedef std::string VRAtr;
typedef std::map<VRKey, VRAtr> VRHT; // Value Representation Hash Table
-typedef std::multimap<TagKey, gdcmHeaderEntry*> TagHeaderEntryHT;
-typedef std::pair<TagKey, gdcmHeaderEntry*> PairHT;
+typedef std::multimap<TagKey, gdcmHeaderEntry *> TagHeaderEntryHT;
+typedef std::pair<TagKey, gdcmHeaderEntry *> PairHT;
typedef std::pair<TagHeaderEntryHT::iterator,TagHeaderEntryHT::iterator> IterHT;
-typedef std::list<gdcmHeaderEntry*> ListTag; // for linking together the Elements
+typedef std::list<gdcmHeaderEntry *> ListTag; // for linking together the Elements
typedef std::string GroupKey;
typedef std::map<GroupKey, int> GroupHT;
* \note 0 for Light Print; 1 for 'medium' Print, 2 for Heavy
*/
void SetPrintLevel(int level) { printLevel = level; };
- virtual void PrintPubEntry(std::ostream & os = std::cout);
- virtual void PrintPubDict (std::ostream & os = std::cout);
- virtual void PrintShaDict (std::ostream & os = std::cout);
+ virtual void PrintEntry(std::ostream &os = std::cout);
+ virtual void PrintPubDict (std::ostream &os = std::cout);
+ virtual void PrintShaDict (std::ostream &os = std::cout);
-// Standard values and informations contained in the header
+// Standard values
inline std::string GetFileName(void) {return filename;}
- bool IsReadable(void);
+// Dictionnaries
+ gdcmDict *GetPubDict(void);
+ gdcmDict *GetShaDict(void);
+ bool SetShaDict(gdcmDict *dict);
+ bool SetShaDict(DictKey dictName);
+
+// Informations contained in the parser
+ virtual bool IsReadable(void);
bool IsImplicitVRLittleEndianTransferSyntax(void);
bool IsExplicitVRLittleEndianTransferSyntax(void);
bool IsDeflatedExplicitVRLittleEndianTransferSyntax(void);
* \brief returns a ref to the Dicom Header H table (multimap)
* return the Dicom Header H table
*/
- inline TagHeaderEntryHT &GetPubEntry(void) { return tagHT; };
+ inline TagHeaderEntryHT &GetEntry(void) { return tagHT; };
/**
* \ingroup gdcmHeader
* \brief returns a ref to the Dicom Header chained list
* return the Dicom Header chained list
*/
- inline ListTag &GetPubListEntry(void) { return listEntries; };
+ inline ListTag &GetListEntry(void) { return listEntries; };
// Read (used in gdcmFile)
FILE *OpenFile(bool exception_on_error = false) throw(gdcmFileError);
bool CloseFile(void);
- virtual void Parse(bool exception_on_error = false) throw(gdcmFormatError);
// Write (used in gdcmFile)
virtual bool Write(FILE *, FileType);
// System access
inline int GetSwapCode(void) { return sw; }
guint16 SwapShort(guint16); // needed by gdcmFile
- guint32 SwapLong(guint32); // for JPEG Files
+ guint32 SwapLong(guint32); // needed by gdcmFile
+ guint16 UnswapShort(guint16); // needed by gdcmFile
+ guint32 UnswapLong(guint32); // needed by gdcmFile
protected:
// Entry
virtual void *LoadEntryVoidArea (guint16 Group, guint16 Element);
virtual bool SetEntryVoidAreaByNumber(void *a, guint16 Group, guint16 Elem);
+ virtual void UpdateShaEntries(void);
+
// Header entry
gdcmHeaderEntry *GetHeaderEntryByName (std::string Name);
gdcmHeaderEntry *GetHeaderEntryByNumber(guint16 group, guint16 element);
- void LoadHeaderEntrySafe (gdcmHeaderEntry *);
+ void LoadHeaderEntrySafe(gdcmHeaderEntry *);
void UpdateGroupLength(bool SkipSequence = false, FileType type = ImplicitVR);
void WriteEntries(FileType type, FILE *);
static const unsigned int HEADER_LENGTH_TO_READ;
static const unsigned int MAX_SIZE_LOAD_ELEMENT_VALUE;
+protected:
+ int enableSequences;
+ int printLevel;
+
private:
// Read
+ void Parse(bool exception_on_error = false) throw(gdcmFormatError);
+
void LoadHeaderEntries (void);
void LoadHeaderEntry (gdcmHeaderEntry *);
void AddHeaderEntry (gdcmHeaderEntry *);
void FindHeaderEntryLength(gdcmHeaderEntry *);
void FindHeaderEntryVR (gdcmHeaderEntry *);
+ bool CheckHeaderEntryVR (gdcmHeaderEntry *, VRKey);
+
+ std::string GetHeaderEntryValue (gdcmHeaderEntry *);
+ std::string GetHeaderEntryUnvalue(gdcmHeaderEntry *);
void SkipHeaderEntry (gdcmHeaderEntry *);
void FixHeaderEntryFoundLength(gdcmHeaderEntry *, guint32);
gdcmHeaderEntry *ReadNextHeaderEntry (void);
gdcmHeaderEntry *NewHeaderEntryByNumber(guint16 group, guint16 element);
gdcmHeaderEntry *NewHeaderEntryByName (std::string Name);
+ gdcmDictEntry *NewVirtualDictEntry(guint16 group, guint16 element,
+ std::string vr = "Unknown",
+ std::string fourth = "Unknown",
+ std::string name = "Unknown");
+ gdcmDictEntry *NewVirtualDictEntry(gdcmHeaderEntry *);
// Deprecated (Not used)
gdcmHeaderEntry *NewManualHeaderEntryToPubDict(std::string NewTagName,
// Refering underlying filename.
std::string filename;
- // Pointer to the Value Representation Hash Table which contains all
- // the VR of the DICOM version3 public dictionary.
- gdcmVR *dicom_vr; // Not a class member for thread-safety reasons
-
- // Pointer to the Transfert Syntax Hash Table which contains all
- // the TS of the DICOM version3 public dictionary.
- gdcmTS *dicom_ts; // Not a class member for thread-safety reasons
-
- // Pointer to global dictionary container
- gdcmDictSet *Dicts; // Not a class member for thread-safety reasons
-
// Public dictionary used to parse this header
gdcmDict *RefPubDict;
-
- // Optional "shadow dictionary" (private elements) used to parse this
- // header
+ // Optional "shadow dictionary" (private elements) used to parse this header
gdcmDict *RefShaDict;
TagHeaderEntryHT tagHT; // H Table (multimap), to provide fast access
ListTag listEntries; // chained list, to keep the 'spacial' ordering
+
// true if a gdcmHeaderEntry was added post parsing
int wasUpdated;
- // for PrintHeader
- int printLevel;
-
- int enableSequences;
// Swap code e.g. little, big, bad-big, bad-little endian). Warning:
// this code is not fixed during header parsing.