// @(#)root/meta:$Id$
// Author: Rene Brun   05/03/95

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TRealData
#define ROOT_TRealData


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TRealData                                                            //
//                                                                      //
// Description of persistent data members.                              //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif

class TDataMember;


class TRealData : public TObject {

private:
   TDataMember     *fDataMember;     //pointer to data member descriptor
   Long_t           fThisOffset;     //offset with the THIS object pointer
   TString          fName;           //Concatenated names of this realdata
   TMemberStreamer *fStreamer;       //Object to stream the data member.
   Bool_t           fIsObject;       //true if member is an object

   TRealData(const TRealData& rhs);  // Copying TRealData in not allowed.
   TRealData& operator=(const TRealData& rhs);  // Copying TRealData in not allowed.

public:
   enum {
      kTransient = BIT(14)  // The member is transient.
   };

   TRealData();
   TRealData(const char *name, Long_t offset, TDataMember *datamember);
   virtual     ~TRealData();

   void                AdoptStreamer(TMemberStreamer *p);
   virtual const char *GetName() const {return fName.Data();}
   TDataMember        *GetDataMember() const {return fDataMember;}
   TMemberStreamer    *GetStreamer() const;
   Long_t              GetThisOffset() const {return fThisOffset;}
   Bool_t              IsObject() const {return fIsObject;}
   void                SetIsObject(Bool_t isObject) {fIsObject=isObject;}
   void                WriteRealData(void *pointer, char *&buffer);

   static void         GetName(TString &output, TDataMember *dm);

   ClassDef(TRealData,0)  //Description of persistent data members
};

#endif

 TRealData.h:1
 TRealData.h:2
 TRealData.h:3
 TRealData.h:4
 TRealData.h:5
 TRealData.h:6
 TRealData.h:7
 TRealData.h:8
 TRealData.h:9
 TRealData.h:10
 TRealData.h:11
 TRealData.h:12
 TRealData.h:13
 TRealData.h:14
 TRealData.h:15
 TRealData.h:16
 TRealData.h:17
 TRealData.h:18
 TRealData.h:19
 TRealData.h:20
 TRealData.h:21
 TRealData.h:22
 TRealData.h:23
 TRealData.h:24
 TRealData.h:25
 TRealData.h:26
 TRealData.h:27
 TRealData.h:28
 TRealData.h:29
 TRealData.h:30
 TRealData.h:31
 TRealData.h:32
 TRealData.h:33
 TRealData.h:34
 TRealData.h:35
 TRealData.h:36
 TRealData.h:37
 TRealData.h:38
 TRealData.h:39
 TRealData.h:40
 TRealData.h:41
 TRealData.h:42
 TRealData.h:43
 TRealData.h:44
 TRealData.h:45
 TRealData.h:46
 TRealData.h:47
 TRealData.h:48
 TRealData.h:49
 TRealData.h:50
 TRealData.h:51
 TRealData.h:52
 TRealData.h:53
 TRealData.h:54
 TRealData.h:55
 TRealData.h:56
 TRealData.h:57
 TRealData.h:58
 TRealData.h:59
 TRealData.h:60
 TRealData.h:61
 TRealData.h:62
 TRealData.h:63
 TRealData.h:64
 TRealData.h:65
 TRealData.h:66
 TRealData.h:67
 TRealData.h:68
 TRealData.h:69
 TRealData.h:70