From 11a9370d8aec780a03f09a4f38aec6dff110282b Mon Sep 17 00:00:00 2001
From: Sergey Linev <S.Linev@gsi.de>
Date: Tue, 5 Sep 2017 14:26:38 +0200
Subject: [PATCH] g3d-io: equip TPolyLine3D custom streamer

Allows to use JSON and XML storage of such objects.
Does not affect binary I/O
---
 graf3d/g3d/src/TPolyLine3D.cxx | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/graf3d/g3d/src/TPolyLine3D.cxx b/graf3d/g3d/src/TPolyLine3D.cxx
index 420aaf5a306..84b5f991f16 100644
--- a/graf3d/g3d/src/TPolyLine3D.cxx
+++ b/graf3d/g3d/src/TPolyLine3D.cxx
@@ -723,24 +723,40 @@ void TPolyLine3D::Streamer(TBuffer &b)
    UInt_t R__s, R__c;
    if (b.IsReading()) {
       b.ReadVersion(&R__s, &R__c);
+      b.ClassBegin(TPolyLine3D::IsA());
+      b.ClassMember("TObject");
       TObject::Streamer(b);
+      b.ClassMember("TAttLine");
       TAttLine::Streamer(b);
+      b.ClassMember("fN", "Int_t");
       b >> fN;
       if (fN) {
          fP = new Float_t[3*fN];
+         b.ClassMember("fP", "Float_t", 3*fN);
          b.ReadFastArray(fP,3*fN);
       }
+      b.ClassMember("fOption","TString");
       fOption.Streamer(b);
       fLastPoint = fN-1;
+      b.ClassEnd(TPolyLine3D::IsA());
       b.CheckByteCount(R__s, R__c, TPolyLine3D::IsA());
    } else {
       R__c = b.WriteVersion(TPolyLine3D::IsA(), kTRUE);
+      b.ClassBegin(TPolyLine3D::IsA());
+      b.ClassMember("TObject");
       TObject::Streamer(b);
+      b.ClassMember("TAttLine");
       TAttLine::Streamer(b);
+      b.ClassMember("fN", "Int_t");
       Int_t size = Size();
       b << size;
-      if (size) b.WriteFastArray(fP, 3*size);
+      if (size) {
+         b.ClassMember("fP", "Float_t", 3*size);
+         b.WriteFastArray(fP, 3*size);
+      }
+      b.ClassMember("fOption","TString");
       fOption.Streamer(b);
+      b.ClassEnd(TPolyLine3D::IsA());
       b.SetByteCount(R__c, kTRUE);
    }
 }
-- 
GitLab