// 3/ Make sure we can setup some default size value,
// which should be around 4500 entries which is the
// average dictionary size (said JPR)
+
+#define g_malloc malloc
+#define g_free free
+
#ifdef __GNUC__
#include <stdint.h>
#define guint16 uint16_t
#define guint32 uint32_t
-#define g_malloc malloc
-#define g_free free
#endif
-#ifdef _MSC_VER
-#include <glib.h>
+#ifdef _MSC_VER
+typedef unsigned short guint16;
+typedef unsigned int guint32;
+
#endif
#ifdef _MSC_VER
typedef map<string, ElValue*> TagElValueNameHT;
// Container for a set of succefully parsed ElValues.
class GDCM_EXPORT ElValSet {
- // We need both accesses with a TagKey and the Dicentry.Name
+ // We need both accesses with a TagKey and the Dictentry.Name
TagElValueHT tagHt;
TagElValueNameHT NameHt;
public:
//BigEndian,
//BadBigEndian};
private:
- // All instances share the same value representation dictionary
+ // All instances share the same Value Representation dictionary
static VRHT *dicom_vr;
+ // Dictionaries of data elements:
static gdcmDictSet* Dicts; // Global dictionary container
gdcmDict* RefPubDict; // Public Dictionary
gdcmDict* RefShaDict; // Shadow Dictionary (optional)
- ElValSet PubElVals; // Element Values parsed with Public Dictionary
- ElValSet ShaElVals; // Element Values parsed with Shadow Dictionary
+ // Parsed element values:
+ ElValSet PubElVals; // parsed with Public Dictionary
+ ElValSet ShaElVals; // parsed with Shadow Dictionary
// In order to inspect/navigate through the file
string filename;
FILE * fp;
// outside of the elements:
guint16 grPixel;
guint16 numPixel;
+ // Swap code (little, big, big-bad endian): this code is not fixed
+ // during parsing.
int sw;
+ // Only the elements whose size are below this bound shall be loaded.
+ // By default, this upper bound is limited to 1024 (which looks reasonable
+ // when one considers the definition of the various VR contents).
+ guint32 MaxSizeLoadElementValue;
guint16 ReadInt16(void);
guint32 ReadInt32(void);
void FixFoundLength(ElValue*, guint32);
bool IsAnInteger(ElValue *);
bool IsBigEndianTransferSyntax(void);
- ElValue * ReadNextElement(void);
+ void SetMaxSizeLoadElementValue(long);
+ ElValue * ReadNextElement(void);
gdcmDictEntry * IsInDicts(guint32, guint32);
size_t GetPixelOffset(void);
protected: