Re: [ROOT] TTree deleting branch object even with SetAutoDelete(kFALSE) andSetCanDelete(kFALSE)

From: Frankland John (frankland@ganil.fr)
Date: Mon Oct 27 2003 - 17:04:34 MET


Hello again

I think I have localised my "problem". Now I have to ask some stupid 
questions
and wait to get roundly chastised for my ignorance. Let's go!

For streaming member pointers I rely heavily on the very clear reply 
given by
Rene to Paolo Adragna 
(http://root.cern.ch/root/roottalk/roottalk03/2707.html).
If a class contains a member pointer which may or may not point to a valid
object (i.e. initialised to 0 in the default ctor) then the comment 
field is "//" and
when reading the object the class' default ctor is called (pointer 
initialised to 0) and then
in the automatic streamer for the class R__b >> fPointer is used, which 
I suppose
creates an object for fPointer to point to and then fills it from the 
buffer R__b.
So any class with a "//" member pointer is obliged to call its ctor when 
one of its
objects is read - even if e.g. in a TTree we use 
TBranch::SetAutoDelete(kFALSE)
or TStreamerInfo::SetCanDelete(kFALSE).
OK fine.
But now, let's suppose that I decide that in fact fPointer can point to 
a valid
object all the time, i.e. I initialise it in the ctor with fPointer = 
new SomeClass();
Then I put "//->" in the comment field of fPointer, and the automatic 
streamer
should use fPointer->Streamer(); In this case, when I read in an object 
of my class,
ROOT should just call the streamer for the class - it must not call the 
default ctor
otherwise it will create a new SomeClass() object everytime. This is 
part of the message
we are giving with "//->" yes ?? The other part is of course that the 
automatic streamer
should change. However, I have just realised that in all the automatic 
streamers of
all my classes the only member pointers with "//->" comment fields which 
actually
have "fPointer->Streamer()" are TClonesArray pointers.
As an example you will find attached MyClass with the dictionary 
generated with the command
rootcint -v -f MyClass_Dict.C -c -p MyClass.h
Now tell me that all this is normal !!!
Yours,
John

-- 

John D. Frankland <mailto:frankland@ganil.fr>
Beam Coordinator
GANIL
B.P. 55027
14076 CAEN Cedex 05

*tel:* +33 (0)231454628
*fax:* +33 (0)231454665





#include "MyClass.h"

ClassImp(MyClass)

///////////////////////
//		MyClass      //
///////////////////////

MyClass::MyClass()
{
	fList=new fList;
	fRef=0;
	fVector=new TVector3(0.,0.,0);
	fClones=new TClonesArray("TVector3",50);
}

MyClass::~MyClass()
{
	delete fList;
	fList=0;
	fRef=0;
	delete fVector;
	fVector=0;
	delete fClones;
	fClones=0;
}


#include "TObject.h"
#include "TList.h"
#include "TRef.h"
#include "TVector3.h"
#include "TClonesArray.h"

class MyClass : public TObject
{
	TList *fList;//->
	TRef fRef;
	TVector3 *fVector;//->
	TClonesArray *fClones;//->
	
	public:
		
	MyClass();
	virtual ~MyClass();
		
	ClassDef(MyClass,1)//MyClass is great
			
};
	


//
// File generated by rootcint at Mon Oct 27 16:35:17 2003.
// Do NOT change. Changes will be lost next time file is generated
//

#include "RConfig.h"
#if !defined(R__ACCESS_IN_SYMBOL)
//Break the privacy of classes -- Disabled for the moment
#define private public
#define protected public
#endif

#include "MyClass_Dict.h"
#include "TClass.h"
#include "TBuffer.h"
#include "TMemberInspector.h"
#include "TError.h"

#ifndef G__ROOT
#define G__ROOT
#endif

// Since CINT ignores the std namespace, we need to do so in this file.
namespace std {} using namespace std;

#include "RtypesImp.h"

namespace ROOT {
   namespace Shadow {
   } // Of namespace ROOT::Shadow
} // Of namespace ROOT

namespace ROOT {
   void MyClass_ShowMembers(void *obj, TMemberInspector &R__insp, char *R__parent);
   TClass *MyClass_IsA(const void*);
   void *new_MyClass(void *p = 0);
   void *newArray_MyClass(Long_t size);
   void delete_MyClass(void *p);
   void deleteArray_MyClass(void *p);
   void destruct_MyClass(void *p);

   // Function generating the singleton type initializer
   TGenericClassInfo *GenerateInitInstance(const MyClass*)
   {
      MyClass *ptr = 0;
      static ROOT::TGenericClassInfo 
         instance("MyClass", MyClass::Class_Version(), "MyClass.h", 8,
                  typeid(MyClass), DefineBehavior(ptr, ptr),
                  &::MyClass::Dictionary, &MyClass_IsA, 0);
      instance.SetNew(&new_MyClass);
      instance.SetNewArray(&newArray_MyClass);
      instance.SetDelete(&delete_MyClass);
      instance.SetDeleteArray(&deleteArray_MyClass);
      instance.SetDestructor(&destruct_MyClass);
      return &instance;
   }
   // Static variable to force the class initialization
   static ROOT::TGenericClassInfo *_R__UNIQUE_(Init) = GenerateInitInstance((const MyClass*)0x0); R__UseDummy(_R__UNIQUE_(Init));
}

//______________________________________________________________________________
TClass *MyClass::fgIsA = 0;  // static to hold class pointer

//______________________________________________________________________________
const char *MyClass::Class_Name()
{
   return "MyClass";
}

//______________________________________________________________________________
const char *MyClass::ImplFileName()
{
   return ROOT::GenerateInitInstance((const MyClass*)0x0)->GetImplFileName();
}

//______________________________________________________________________________
int MyClass::ImplFileLine()
{
   return ROOT::GenerateInitInstance((const MyClass*)0x0)->GetImplFileLine();
}

//______________________________________________________________________________
void MyClass::Dictionary()
{
   fgIsA = ROOT::GenerateInitInstance((const MyClass*)0x0)->GetClass();
}

//______________________________________________________________________________
TClass *MyClass::Class()
{
   if (!fgIsA) fgIsA = ROOT::GenerateInitInstance((const MyClass*)0x0)->GetClass();
   return fgIsA;
}

//______________________________________________________________________________
void MyClass::Streamer(TBuffer &R__b)
{
   // Stream an object of class MyClass.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b >> fList;
      fRef.Streamer(R__b);
      R__b >> fVector;
      fClones->Streamer(R__b);
      R__b.CheckByteCount(R__s, R__c, MyClass::IsA());
   } else {
      R__c = R__b.WriteVersion(MyClass::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b << fList;
      fRef.Streamer(R__b);
      R__b << fVector;
      fClones->Streamer(R__b);
      R__b.SetByteCount(R__c, kTRUE);
   }
}

//______________________________________________________________________________
void MyClass::ShowMembers(TMemberInspector &R__insp, char *R__parent)
{
      // Inspect the data members of an object of class MyClass.

      TClass *R__cl = MyClass::IsA();
      Int_t R__ncp = strlen(R__parent);
      if (R__ncp || R__cl || R__insp.IsA()) { }
      R__insp.Inspect(R__cl, R__parent, "*fList", &fList);
      R__insp.Inspect(R__cl, R__parent, "fRef", &fRef);
      fRef.ShowMembers(R__insp, strcat(R__parent,"fRef.")); R__parent[R__ncp] = 0;
      R__insp.Inspect(R__cl, R__parent, "*fVector", &fVector);
      R__insp.Inspect(R__cl, R__parent, "*fClones", &fClones);
      TObject::ShowMembers(R__insp, R__parent);
}

namespace ROOT {
   // Return the actual TClass for the object argument
   TClass *MyClass_IsA(const void *obj) {
      return ((::MyClass*)obj)->IsA();
   }
   // Wrappers around operator new
   void *new_MyClass(void *p) {
      return  p ? new(p) ::MyClass : new ::MyClass;
   }
   void *newArray_MyClass(Long_t size) {
      return new ::MyClass[size];
   }
   // Wrapper around operator delete
   void delete_MyClass(void *p) {
      delete ((::MyClass*)p);
   }
   void deleteArray_MyClass(void *p) {
      delete [] ((::MyClass*)p);
   }
   void destruct_MyClass(void *p) {
      typedef ::MyClass current_t;
      ((current_t*)p)->~current_t();
   }
} // end of namespace ROOT for class MyClass

/********************************************************
* MyClass_Dict.C
********************************************************/

#ifdef G__MEMTEST
#undef malloc
#undef free
#endif

extern "C" void G__cpp_reset_tagtableMyClass_Dict();

extern "C" void G__set_cpp_environmentMyClass_Dict() {
  G__add_compiledheader("TROOT.h");
  G__add_compiledheader("TMemberInspector.h");
  G__add_compiledheader("MyClass.h");
  G__cpp_reset_tagtableMyClass_Dict();
}
class G__MyClass_DictdOC_tag {};

void* operator new(size_t size,G__MyClass_DictdOC_tag* p) {
  if(p && G__PVOID!=G__getgvp()) return((void*)p);
#ifndef G__ROOT
  return(malloc(size));
#else
  return(::operator new(size));
#endif
}

/* dummy, for exception */
#ifdef G__EH_DUMMY_DELETE
void operator delete(void *p,G__MyClass_DictdOC_tag* x) {
  if((long)p==G__getgvp() && G__PVOID!=G__getgvp()) return;
#ifndef G__ROOT
  free(p);
#else
  ::operator delete(p);
#endif
}
#endif

static void G__operator_delete(void *p) {
  if((long)p==G__getgvp() && G__PVOID!=G__getgvp()) return;
#ifndef G__ROOT
  free(p);
#else
  ::operator delete(p);
#endif
}

void G__DELDMY_MyClass_DictdOC() { G__operator_delete(0); }

extern "C" int G__cpp_dllrevMyClass_Dict() { return(30051515); }

/*********************************************************
* Member function Interface Method
*********************************************************/

/* MyClass */
static int G__MyClass_Dict_143_0_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   MyClass *p=NULL;
   if(G__getaryconstruct()) p=new MyClass[G__getaryconstruct()];
   else                    p=new MyClass;
      result7->obj.i = (long)p;
      result7->ref = (long)p;
      result7->type = 'u';
      result7->tagnum = G__get_linked_tagnum(&G__MyClass_DictLN_MyClass);
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_2_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   G__letint(result7,85,(long)MyClass::Class());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_3_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   G__letint(result7,67,(long)MyClass::Class_Name());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_4_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__letint(result7,115,(long)MyClass::Class_Version());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_5_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__setnull(result7);
      MyClass::Dictionary();
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_6_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   G__letint(result7,85,(long)((const MyClass*)(G__getstructoffset()))->IsA());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_7_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__setnull(result7);
      ((MyClass*)(G__getstructoffset()))->ShowMembers(*(TMemberInspector*)libp->para[0].ref,(char*)G__int(libp->para[1]));
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_8_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__setnull(result7);
      ((MyClass*)(G__getstructoffset()))->Streamer(*(TBuffer*)libp->para[0].ref);
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_9_0(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__setnull(result7);
      ((MyClass*)(G__getstructoffset()))->StreamerNVirtual(*(TBuffer*)libp->para[0].ref);
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_0_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   G__letint(result7,67,(long)MyClass::DeclFileName());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_1_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__letint(result7,105,(long)MyClass::ImplFileLine());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_2_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   G__letint(result7,67,(long)MyClass::ImplFileName());
   return(1 || funcname || hash || result7 || libp) ;
}

static int G__MyClass_Dict_143_3_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
      G__letint(result7,105,(long)MyClass::DeclFileLine());
   return(1 || funcname || hash || result7 || libp) ;
}

// automatic copy constructor
static int G__MyClass_Dict_143_4_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash)
{
   MyClass *p;
   void *xtmp = (void*)G__int(libp->para[0]);
   p=new MyClass(*(MyClass*)xtmp);
   result7->obj.i = (long)p;
   result7->ref = (long)p;
   result7->type = 'u';
   result7->tagnum = G__get_linked_tagnum(&G__MyClass_DictLN_MyClass);
   return(1 || funcname || hash || result7 || libp) ;
}

// automatic destructor
typedef MyClass G__TMyClass;
static int G__MyClass_Dict_143_5_1(G__value *result7,G__CONST char *funcname,struct G__param *libp,int hash) {
   if(0==G__getstructoffset()) return(1);
   if(G__getaryconstruct())
     if(G__PVOID==G__getgvp())
       delete[] (MyClass *)(G__getstructoffset());
     else
       for(int i=G__getaryconstruct()-1;i>=0;i--)
         delete (MyClass *)((G__getstructoffset())+sizeof(MyClass)*i);
   else  delete (MyClass *)(G__getstructoffset());
      G__setnull(result7);
   return(1 || funcname || hash || result7 || libp) ;
}


/* Setting up global function */

/*********************************************************
* Member function Stub
*********************************************************/

/* MyClass */

/*********************************************************
* Global function Stub
*********************************************************/

/*********************************************************
* Get size of pointer to member function
*********************************************************/
class G__Sizep2memfuncMyClass_Dict {
 public:
  G__Sizep2memfuncMyClass_Dict() {p=&G__Sizep2memfuncMyClass_Dict::sizep2memfunc;}
    size_t sizep2memfunc() { return(sizeof(p)); }
  private:
    size_t (G__Sizep2memfuncMyClass_Dict::*p)();
};

size_t G__get_sizep2memfuncMyClass_Dict()
{
  G__Sizep2memfuncMyClass_Dict a;
  G__setsizep2memfunc((int)a.sizep2memfunc());
  return((size_t)a.sizep2memfunc());
}


/*********************************************************
* virtual base class offset calculation interface
*********************************************************/

   /* Setting up class inheritance */

/*********************************************************
* Inheritance information setup/
*********************************************************/
extern "C" void G__cpp_setup_inheritanceMyClass_Dict() {

   /* Setting up class inheritance */
   if(0==G__getnumbaseclass(G__get_linked_tagnum(&G__MyClass_DictLN_MyClass))) {
     MyClass *G__Lderived;
     G__Lderived=(MyClass*)0x1000;
     {
       TObject *G__Lpbase=(TObject*)G__Lderived;
       G__inheritance_setup(G__get_linked_tagnum(&G__MyClass_DictLN_MyClass),G__get_linked_tagnum(&G__MyClass_DictLN_TObject),(long)G__Lpbase-(long)G__Lderived,1,1);
     }
   }
}

/*********************************************************
* typedef information setup/
*********************************************************/
extern "C" void G__cpp_setup_typetableMyClass_Dict() {

   /* Setting up typedef entry */
   G__search_typename2("Version_t",115,-1,0,
-1);
   G__setnewtype(-1,"Class version identifier (short)",0);
}

/*********************************************************
* Data Member information setup/
*********************************************************/

   /* Setting up class,struct,union tag member variable */

   /* MyClass */
static void G__setup_memvarMyClass(void) {
   G__tag_memvar_setup(G__get_linked_tagnum(&G__MyClass_DictLN_MyClass));
   { MyClass *p; p=(MyClass*)0x1000; if (p) { }
   G__memvar_setup((void*)NULL,85,0,0,G__get_linked_tagnum(&G__MyClass_DictLN_TList),-1,-1,4,"fList=",0,"->");
   G__memvar_setup((void*)NULL,117,0,0,G__get_linked_tagnum(&G__MyClass_DictLN_TRef),-1,-1,4,"fRef=",0,(char*)NULL);
   G__memvar_setup((void*)NULL,85,0,0,G__get_linked_tagnum(&G__MyClass_DictLN_TVector3),-1,-1,4,"fVector=",0,"->");
   G__memvar_setup((void*)NULL,85,0,0,G__get_linked_tagnum(&G__MyClass_DictLN_TClonesArray),-1,-1,4,"fClones=",0,"->");
   G__memvar_setup((void*)NULL,85,0,0,G__get_linked_tagnum(&G__MyClass_DictLN_TClass),-1,-2,4,"fgIsA=",0,(char*)NULL);
   }
   G__tag_memvar_reset();
}

extern "C" void G__cpp_setup_memvarMyClass_Dict() {
}
/***********************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
************************************************************
***********************************************************/

/*********************************************************
* Member function information setup for each class
*********************************************************/
static void G__setup_memfuncMyClass(void) {
   /* MyClass */
   G__tag_memfunc_setup(G__get_linked_tagnum(&G__MyClass_DictLN_MyClass));
   G__memfunc_setup("MyClass",700,G__MyClass_Dict_143_0_0,105,G__get_linked_tagnum(&G__MyClass_DictLN_MyClass),-1,0,0,1,1,0,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("Class",502,G__MyClass_Dict_143_2_0,85,G__get_linked_tagnum(&G__MyClass_DictLN_TClass),-1,0,0,3,1,0,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("Class_Name",982,G__MyClass_Dict_143_3_0,67,-1,-1,0,0,3,1,1,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("Class_Version",1339,G__MyClass_Dict_143_4_0,115,-1,G__defined_typename("Version_t"),0,0,3,1,0,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("Dictionary",1046,G__MyClass_Dict_143_5_0,121,-1,-1,0,0,3,1,0,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("IsA",253,G__MyClass_Dict_143_6_0,85,G__get_linked_tagnum(&G__MyClass_DictLN_TClass),-1,0,0,1,1,8,"",(char*)NULL,(void*)NULL,1);
   G__memfunc_setup("ShowMembers",1132,G__MyClass_Dict_143_7_0,121,-1,-1,0,2,1,1,0,
"u 'TMemberInspector' - 1 - insp C - - 0 - parent",(char*)NULL,(void*)NULL,1);
   G__memfunc_setup("Streamer",835,G__MyClass_Dict_143_8_0,121,-1,-1,0,1,1,1,0,"u 'TBuffer' - 1 - b",(char*)NULL,(void*)NULL,1);
   G__memfunc_setup("StreamerNVirtual",1656,G__MyClass_Dict_143_9_0,121,-1,-1,0,1,1,1,0,"u 'TBuffer' - 1 - b",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("DeclFileName",1145,G__MyClass_Dict_143_0_1,67,-1,-1,0,0,3,1,1,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("ImplFileLine",1178,G__MyClass_Dict_143_1_1,105,-1,-1,0,0,3,1,0,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("ImplFileName",1171,G__MyClass_Dict_143_2_1,67,-1,-1,0,0,3,1,1,"",(char*)NULL,(void*)NULL,0);
   G__memfunc_setup("DeclFileLine",1152,G__MyClass_Dict_143_3_1,105,-1,-1,0,0,3,1,0,"",(char*)NULL,(void*)NULL,0);
   // automatic copy constructor
   G__memfunc_setup("MyClass",700,G__MyClass_Dict_143_4_1,(int)('i'),G__get_linked_tagnum(&G__MyClass_DictLN_MyClass),-1,0,1,1,1,0,"u 'MyClass' - 11 - -",(char*)NULL,(void*)NULL,0);
   // automatic destructor
   G__memfunc_setup("~MyClass",826,G__MyClass_Dict_143_5_1,(int)('y'),-1,-1,0,0,1,1,0,"",(char*)NULL,(void*)NULL,1);
   G__tag_memfunc_reset();
}


/*********************************************************
* Member function information setup
*********************************************************/
extern "C" void G__cpp_setup_memfuncMyClass_Dict() {
}

/*********************************************************
* Global variable information setup for each class
*********************************************************/
static void G__cpp_setup_global0() {

   /* Setting up global variables */
   G__resetplocal();


   G__resetglobalenv();
}
extern "C" void G__cpp_setup_globalMyClass_Dict() {
  G__cpp_setup_global0();
}

/*********************************************************
* Global function information setup for each class
*********************************************************/
static void G__cpp_setup_func0() {
   G__lastifuncposition();

}

static void G__cpp_setup_func1() {
}

static void G__cpp_setup_func2() {
}

static void G__cpp_setup_func3() {
}

static void G__cpp_setup_func4() {

   G__resetifuncposition();
}

extern "C" void G__cpp_setup_funcMyClass_Dict() {
  G__cpp_setup_func0();
  G__cpp_setup_func1();
  G__cpp_setup_func2();
  G__cpp_setup_func3();
  G__cpp_setup_func4();
}

/*********************************************************
* Class,struct,union,enum tag information setup
*********************************************************/
/* Setup class/struct taginfo */
G__linked_taginfo G__MyClass_DictLN_TClass = { "TClass" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TBuffer = { "TBuffer" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TMemberInspector = { "TMemberInspector" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TObject = { "TObject" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TList = { "TList" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TRef = { "TRef" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TVector3 = { "TVector3" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_TClonesArray = { "TClonesArray" , 99 , -1 };
G__linked_taginfo G__MyClass_DictLN_MyClass = { "MyClass" , 99 , -1 };

/* Reset class/struct taginfo */
extern "C" void G__cpp_reset_tagtableMyClass_Dict() {
  G__MyClass_DictLN_TClass.tagnum = -1 ;
  G__MyClass_DictLN_TBuffer.tagnum = -1 ;
  G__MyClass_DictLN_TMemberInspector.tagnum = -1 ;
  G__MyClass_DictLN_TObject.tagnum = -1 ;
  G__MyClass_DictLN_TList.tagnum = -1 ;
  G__MyClass_DictLN_TRef.tagnum = -1 ;
  G__MyClass_DictLN_TVector3.tagnum = -1 ;
  G__MyClass_DictLN_TClonesArray.tagnum = -1 ;
  G__MyClass_DictLN_MyClass.tagnum = -1 ;
}


extern "C" void G__cpp_setup_tagtableMyClass_Dict() {

   /* Setting up class,struct,union tag entry */
   G__get_linked_tagnum(&G__MyClass_DictLN_TClass);
   G__get_linked_tagnum(&G__MyClass_DictLN_TBuffer);
   G__get_linked_tagnum(&G__MyClass_DictLN_TMemberInspector);
   G__get_linked_tagnum(&G__MyClass_DictLN_TObject);
   G__get_linked_tagnum(&G__MyClass_DictLN_TList);
   G__get_linked_tagnum(&G__MyClass_DictLN_TRef);
   G__get_linked_tagnum(&G__MyClass_DictLN_TVector3);
   G__get_linked_tagnum(&G__MyClass_DictLN_TClonesArray);
   G__tagtable_setup(G__get_linked_tagnum(&G__MyClass_DictLN_MyClass),sizeof(MyClass),-1,29952,"MyClass is great",G__setup_memvarMyClass,G__setup_memfuncMyClass);
}
extern "C" void G__cpp_setupMyClass_Dict(void) {
  G__check_setup_version(30051515,"G__cpp_setupMyClass_Dict()");
  G__set_cpp_environmentMyClass_Dict();
  G__cpp_setup_tagtableMyClass_Dict();

  G__cpp_setup_inheritanceMyClass_Dict();

  G__cpp_setup_typetableMyClass_Dict();

  G__cpp_setup_memvarMyClass_Dict();

  G__cpp_setup_memfuncMyClass_Dict();
  G__cpp_setup_globalMyClass_Dict();
  G__cpp_setup_funcMyClass_Dict();

   if(0==G__getsizep2memfunc()) G__get_sizep2memfuncMyClass_Dict();
  return;
}
class G__cpp_setup_initMyClass_Dict {
  public:
    G__cpp_setup_initMyClass_Dict() { G__add_setup_func("MyClass_Dict",(G__incsetup)(&G__cpp_setupMyClass_Dict)); G__call_setup_funcs(); }
   ~G__cpp_setup_initMyClass_Dict() { G__remove_setup_func("MyClass_Dict"); }
};
G__cpp_setup_initMyClass_Dict G__cpp_setup_initializerMyClass_Dict;



/********************************************************************
* MyClass_Dict.h
********************************************************************/
#ifdef __CINT__
#error MyClass_Dict.h/C is only for compilation. Abort cint.
#endif
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#define G__ANSIHEADER
#define G__DICTIONARY
#include "G__ci.h"
extern "C" {
extern void G__cpp_setup_tagtableMyClass_Dict();
extern void G__cpp_setup_inheritanceMyClass_Dict();
extern void G__cpp_setup_typetableMyClass_Dict();
extern void G__cpp_setup_memvarMyClass_Dict();
extern void G__cpp_setup_globalMyClass_Dict();
extern void G__cpp_setup_memfuncMyClass_Dict();
extern void G__cpp_setup_funcMyClass_Dict();
extern void G__set_cpp_environmentMyClass_Dict();
}


#include "TROOT.h"
#include "TMemberInspector.h"
#include "MyClass.h"

#ifndef G__MEMFUNCBODY
#endif

extern G__linked_taginfo G__MyClass_DictLN_TClass;
extern G__linked_taginfo G__MyClass_DictLN_TBuffer;
extern G__linked_taginfo G__MyClass_DictLN_TMemberInspector;
extern G__linked_taginfo G__MyClass_DictLN_TObject;
extern G__linked_taginfo G__MyClass_DictLN_TList;
extern G__linked_taginfo G__MyClass_DictLN_TRef;
extern G__linked_taginfo G__MyClass_DictLN_TVector3;
extern G__linked_taginfo G__MyClass_DictLN_TClonesArray;
extern G__linked_taginfo G__MyClass_DictLN_MyClass;

/* STUB derived class for protected member access */



This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:16 MET