// @(#)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.             *
 *************************************************************************/

#include "TRealData.h"
#include "TDataMember.h"
#include "TClass.h"
#include "TStreamer.h"

ClassImp(TRealData)

//______________________________________________________________________________
//
//  The TRealData class manages the effective list of all data members
//  for a given class. For example for an object of class TLine that inherits
//  from TObject and TAttLine, the TRealData object for a line contains the
//  complete list of all data members of the 3 classes.
//
//  The list of TRealData members in TClass is built when functions like
//  object.Inspect or object.DrawClass are called.

//______________________________________________________________________________
TRealData::TRealData() : TObject(), fDataMember(0), fThisOffset(-1),
   fStreamer(0), fIsObject(kFALSE)
{
//*-*-*-*-*-*-*-*-*-*-*RealData default constructor*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  ============================

}


//______________________________________________________________________________
TRealData::TRealData(const char *name, Long_t offset, TDataMember *datamember)
   : TObject(), fDataMember(datamember), fThisOffset(offset), fName(name),
     fStreamer(0), fIsObject(kFALSE)
{
//*-*-*-*-*-*-*-*-*-*Constructor to define one persistent data member*-*-*-*-*
//*-*                ================================================
//*-* datamember is the pointer to the data member descriptor.
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

}

//______________________________________________________________________________
TRealData::~TRealData()
{
//*-*-*-*-*-*-*-*-*-*-*RealData default destructor*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*                  =============================

   delete fStreamer;
}

//______________________________________________________________________________
void TRealData::WriteRealData(void *, char *&)
{
//*-*-*-*-*Write one persistent data member on output buffer*-*-*-*-*-*-*-*
//*-*      =================================================
//*-* pointer points to the current persistent data member
//*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
//*-*
}

//______________________________________________________________________________
void TRealData::AdoptStreamer(TMemberStreamer *str)
{
   //fDataMember->SetStreamer(str);
   //delete fStreamer;
   fStreamer = str;
}

//______________________________________________________________________________
void TRealData::GetName(TString &output, TDataMember *dm)
{
   // Return the name of the data member as represented in the list of
   // real data.

   output.Clear();
   // keep an empty name if data member is not found
   if (dm) output = dm->GetName();
   if (dm->IsaPointer())
      output = TString("*")+output;
   else {
      if (dm && dm->GetArrayDim() > 0) {
         // in case of array (like fMatrix[2][2] we need to add max index )
         // this only in case of it os not a pointer
         for (int idim = 0; idim < dm->GetArrayDim(); ++idim)
            output += TString::Format("[%d]",dm->GetMaxIndex(idim) );
      }
   }
}


//______________________________________________________________________________
TMemberStreamer *TRealData::GetStreamer() const
{
   // Return the associate streamer object.
   return fStreamer; // return fDataMember->GetStreamer();
}

 TRealData.cxx:1
 TRealData.cxx:2
 TRealData.cxx:3
 TRealData.cxx:4
 TRealData.cxx:5
 TRealData.cxx:6
 TRealData.cxx:7
 TRealData.cxx:8
 TRealData.cxx:9
 TRealData.cxx:10
 TRealData.cxx:11
 TRealData.cxx:12
 TRealData.cxx:13
 TRealData.cxx:14
 TRealData.cxx:15
 TRealData.cxx:16
 TRealData.cxx:17
 TRealData.cxx:18
 TRealData.cxx:19
 TRealData.cxx:20
 TRealData.cxx:21
 TRealData.cxx:22
 TRealData.cxx:23
 TRealData.cxx:24
 TRealData.cxx:25
 TRealData.cxx:26
 TRealData.cxx:27
 TRealData.cxx:28
 TRealData.cxx:29
 TRealData.cxx:30
 TRealData.cxx:31
 TRealData.cxx:32
 TRealData.cxx:33
 TRealData.cxx:34
 TRealData.cxx:35
 TRealData.cxx:36
 TRealData.cxx:37
 TRealData.cxx:38
 TRealData.cxx:39
 TRealData.cxx:40
 TRealData.cxx:41
 TRealData.cxx:42
 TRealData.cxx:43
 TRealData.cxx:44
 TRealData.cxx:45
 TRealData.cxx:46
 TRealData.cxx:47
 TRealData.cxx:48
 TRealData.cxx:49
 TRealData.cxx:50
 TRealData.cxx:51
 TRealData.cxx:52
 TRealData.cxx:53
 TRealData.cxx:54
 TRealData.cxx:55
 TRealData.cxx:56
 TRealData.cxx:57
 TRealData.cxx:58
 TRealData.cxx:59
 TRealData.cxx:60
 TRealData.cxx:61
 TRealData.cxx:62
 TRealData.cxx:63
 TRealData.cxx:64
 TRealData.cxx:65
 TRealData.cxx:66
 TRealData.cxx:67
 TRealData.cxx:68
 TRealData.cxx:69
 TRealData.cxx:70
 TRealData.cxx:71
 TRealData.cxx:72
 TRealData.cxx:73
 TRealData.cxx:74
 TRealData.cxx:75
 TRealData.cxx:76
 TRealData.cxx:77
 TRealData.cxx:78
 TRealData.cxx:79
 TRealData.cxx:80
 TRealData.cxx:81
 TRealData.cxx:82
 TRealData.cxx:83
 TRealData.cxx:84
 TRealData.cxx:85
 TRealData.cxx:86
 TRealData.cxx:87
 TRealData.cxx:88
 TRealData.cxx:89
 TRealData.cxx:90
 TRealData.cxx:91
 TRealData.cxx:92
 TRealData.cxx:93
 TRealData.cxx:94
 TRealData.cxx:95
 TRealData.cxx:96
 TRealData.cxx:97
 TRealData.cxx:98
 TRealData.cxx:99
 TRealData.cxx:100
 TRealData.cxx:101
 TRealData.cxx:102
 TRealData.cxx:103
 TRealData.cxx:104
 TRealData.cxx:105
 TRealData.cxx:106