-void gdcmBinEntry::Print(std::ostream &os) {
- PrintCommonPart(os);
- /// \todo Write a true specialisation of Print i.e. display something
- /// for BinEntry extension.
- dbg.Verbose(1, "gdcmBinEntry::Print: so WHAT ?");
+void BinEntry::Print(std::ostream &os)
+{
+ DocEntry::Print(os);
+ std::ostringstream s;
+ void* binArea = GetBinArea();
+ if (binArea)
+ {
+ //s << " [" << GDCM_BINLOADED
+ s << " [" << GetValue()
+ << "; length = " << GetLength() << "]";
+ }
+ else
+ {
+ if ( GetLength() == 0 )
+ {
+ s << " []";
+ }
+ else
+ {
+ //s << " [gdcm::Binary data NOT loaded]";
+ s << " [" <<GetValue() << "]";
+ }
+
+ }
+ os << s.str();
+}
+
+/*
+ * \brief canonical Writer
+ * @param fp already open file pointer
+ * @param filetype type of the file to be written
+*/
+void BinEntry::Write(std::ofstream* fp, FileType filetype)
+{
+ DocEntry::Write(fp, filetype);
+ void* binArea = GetBinArea();
+ int lgr = GetLength();
+ if (binArea)
+ {
+ // there is a 'non string' LUT, overlay, etc
+ fp->write ( (char*)binArea, lgr ); // Elem value
+ //assert( strlen((char*)binArea) == lgr );
+
+ }
+ else
+ {
+ // nothing was loaded, but we need to skip space on disc
+ fp->seekp(lgr, std::ios_base::cur);
+ }