+// Print
+/**
+ * \brief Prints the 'std::string representable' value of ValEntry
+ * @param os ostream we want to print in
+ * @param indent Indentation string to be prepended during printing
+ */
+void ValEntry::Print(std::ostream &os, std::string const &)
+{
+ uint16_t g = GetGroup();
+ uint16_t e = GetElement();
+ VRKey vr = GetVR();
+ std::ostringstream s;
+ std::string st;
+ std::string d2;
+
+ os << "V ";
+ DocEntry::Print(os);
+
+ if (g == 0xfffe) // delimiters have NO value
+ {
+ // just to avoid identing all the remaining code
+ return;
+ }
+
+ TS *ts = Global::GetTS();
+
+ TSAtr v = GetValue();
+ d2 = Util::CreateCleanString(v); // replace non printable characters by '.'
+ if( (long)GetLength() <= ValEntry::GetMaxSizePrintEntry()
+ || 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 only the rough code)
+ // First 'clean' trailing character (space or zero)
+ if (g == 0x0002)
+ {
+ // Any more to be displayed ?
+ if ( e == 0x0010 || e == 0x0002 )
+ {
+ if ( v.length() != 0 ) // for brain damaged headers
+ {
+ if ( ! isdigit((unsigned char)v[v.length()-1]) )
+ {
+ v.erase(v.length()-1, 1);
+ }
+ }
+ s << " ==>\t[" << ts->GetValue(v) << "]";
+ }
+ }
+ else
+ {
+ if (g == 0x0008)
+ {
+ if ( e == 0x0016 || e == 0x1150 )
+ {
+ if ( v.length() != 0 ) // for brain damaged headers
+ {
+ if ( ! isdigit((unsigned char)v[v.length()-1]) )
+ {
+ v.erase(v.length()-1, 1);
+ }
+ }
+ s << " ==>\t[" << ts->GetValue(v) << "]";
+ }
+ }
+ else
+ {
+ if (g == 0x0004)
+ {
+ if ( e == 0x1510 || e == 0x1512 )
+ {
+ if ( v.length() != 0 ) // for brain damaged headers
+ {
+ if ( ! isdigit((unsigned char)v[v.length()-1]) )
+ {
+ v.erase(v.length()-1, 1);
+ }
+ }
+ s << " ==>\t[" << ts->GetValue(v) << "]";
+ }
+ }
+ }
+ }
+ //if (e == 0x0000) { // elem 0x0000 --> group length
+ if ( vr == "UL" || vr == "US" || vr == "SL" || vr == "SS" )
+ {
+ if (v == "4294967295") // to avoid troubles in convertion
+ {
+ st = "ffffffff";
+ }
+ else
+ {
+ if ( GetLength() != 0 )
+ {
+ st = Util::Format(" x(%x)", atoi(v.c_str()));//FIXME
+ }
+ else
+ {
+ st = " ";
+ }
+ }
+ s << st;
+ }
+ os << s.str();
+}
+
+//-----------------------------------------------------------------------------
+} // end namespace gdcm
+