ROOT logo
// @(#)root/io:$Id: TVirtualArray.h 25450 2008-09-18 21:13:42Z pcanal $
// Author: Philippe Canal July, 2008

/*************************************************************************
 * 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_TVirtualArray
#define ROOT_TVirtualArray


//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TVirtualArray                                                       //
//                                                                      //
// Wrapper around an object and giving indirect access to its content    //
// even if the object is not of a class in the Cint/Reflex dictionary.  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TClassRef.h"

class TVirtualArray {
public:
   TClassRef  fClass;
   UInt_t     fSize; 
   char      *fArray; //[fSize] 

   TVirtualArray( TClass *cl, UInt_t size ) : fClass(cl), fSize(size), fArray( (char*)( cl ? cl->NewArray(size) : 0) ) {};
   ~TVirtualArray() { if (fClass) fClass->DeleteArray( fArray ); }

   TClass *GetClass() { return fClass; }
   char *operator[](UInt_t ind) const { return GetObjectAt(ind); }
   char *GetObjectAt(UInt_t ind) const { return fArray+fClass->Size()*ind; }

};

#endif // ROOT_TVirtualArray
 TVirtualArray.h:1
 TVirtualArray.h:2
 TVirtualArray.h:3
 TVirtualArray.h:4
 TVirtualArray.h:5
 TVirtualArray.h:6
 TVirtualArray.h:7
 TVirtualArray.h:8
 TVirtualArray.h:9
 TVirtualArray.h:10
 TVirtualArray.h:11
 TVirtualArray.h:12
 TVirtualArray.h:13
 TVirtualArray.h:14
 TVirtualArray.h:15
 TVirtualArray.h:16
 TVirtualArray.h:17
 TVirtualArray.h:18
 TVirtualArray.h:19
 TVirtualArray.h:20
 TVirtualArray.h:21
 TVirtualArray.h:22
 TVirtualArray.h:23
 TVirtualArray.h:24
 TVirtualArray.h:25
 TVirtualArray.h:26
 TVirtualArray.h:27
 TVirtualArray.h:28
 TVirtualArray.h:29
 TVirtualArray.h:30
 TVirtualArray.h:31
 TVirtualArray.h:32
 TVirtualArray.h:33
 TVirtualArray.h:34
 TVirtualArray.h:35
 TVirtualArray.h:36
 TVirtualArray.h:37
 TVirtualArray.h:38
 TVirtualArray.h:39
 TVirtualArray.h:40
 TVirtualArray.h:41
 TVirtualArray.h:42