#endif
#include <iomanip> // for std::ios::left, ...
+
+#define MAX_SIZE_PRINT_ELEMENT_VALUE 64
+
//-----------------------------------------------------------------------------
// Constructor / Destructor
/**
*/
gdcmHeaderEntry::gdcmHeaderEntry(gdcmDictEntry* in) {
ImplicitVR = false;
+ voidArea = NULL; // unsecure memory area to hold 'non string' values
entry = in;
}
//-----------------------------------------------------------------------------
// Print
+/**
+ * \ingroup gdcmHeaderEntry
+ * \brief canonical Printer
+ */
void gdcmHeaderEntry::Print(std::ostream & os) {
size_t o;
unsigned short int g, e;
std::ostringstream s;
guint32 lgth;
char greltag[10]; //group element tag
+
g = GetGroup();
e = GetElement();
v = GetValue();
sprintf(greltag,"%04x|%04x ",g,e);
s << greltag ;
- d2 = _CreateCleanString(v); // replace non printable characters by '.'
+ d2 = CreateCleanString(v); // replace non printable characters by '.'
if (printLevel>=2) {
s << "lg : ";
- lgth = GetReadLength();
+ lgth = GetReadLength(); // ReadLength, as opposed to UsableLength
if (lgth == 0xffffffff) {
sprintf(st,"x(ffff)"); // I said : "x(ffff)" !
s.setf(std::ios::left);
if (printLevel>=1) {
s.setf(std::ios::left);
s << std::setw(66-GetName().length()) << " ";
- }
-
- s << "[" << GetName()<< "]";
- if( (GetLength()<64) || (printLevel>=3) )
- s << " [" << d2 << "]";
- else
- s << " [ gdcm::too long for print (" << GetLength() << ") ]";
+ }
+
+ s << "[" << GetName()<< "]";
+ if (voidArea != NULL) {
+ s << " [gdcm::Non String Data Loaded in Unsecure Area ("
+ << GetLength() << ") ]";
+ }
+
+ else {
+ if( (GetLength()<MAX_SIZE_PRINT_ELEMENT_VALUE) ||
+ (printLevel>=3) ||
+ (d2.find("gdcm::NotLoaded.") < d2.length()) )
+ s << " [" << d2 << "]";
+ else
+ s << " [gdcm::too long for print (" << GetLength() << ") ]";
+ }
+
// Display the UID value (instead of displaying the rough code)
if (g == 0x0002) { // Any more to be displayed ?
if ( (e == 0x0010) || (e == 0x0002) )