Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TVirtualArray.h
Go to the documentation of this file.
1// @(#)root/io:$Id$
2// Author: Philippe Canal July, 2008
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#ifndef ROOT_TVirtualArray
13#define ROOT_TVirtualArray
14
15
16
17/**
18\class TVirtualArray
19\ingroup io_other
20Wrapper around an object and giving indirect access to its content
21even if the object is not of a class in the Cint/Reflex dictionary.
22*/
23
24#include "TClass.h"
25#include "TClassRef.h"
26
28public:
30
34 ObjectPtr fArray; ///< fSize elements
35
36 TVirtualArray( TClass *cl, UInt_t size ) : fClass(cl), fCapacity(size), fSize(size), fArray( ( cl ? cl->NewObjectArray(size) : ObjectPtr{nullptr, nullptr}) ) {};
37 ~TVirtualArray() { if (fClass) fClass->DeleteArray( fArray ); }
38
39 TClass *GetClass() { return fClass; }
40 char *operator[](UInt_t ind) const { return GetObjectAt(ind); }
41 char *GetObjectAt(UInt_t ind) const { return ((char*)fArray.GetPtr())+fClass->Size()*ind; }
42
44 // Set the used size of this array to 'size'. If size is greater than the existing
45 // capacity, reallocate the array BUT no data is preserved.
46 fSize = size;
47 if (fSize > fCapacity && fClass) {
48 fClass->DeleteArray( fArray );
49 fArray = fClass->NewObjectArray(fSize);
51 }
52 }
53
54
55};
56
57#endif // ROOT_TVirtualArray
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
TClassRef is used to implement a permanent reference to a TClass object.
Definition TClassRef.h:29
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:84
ObjectPtr fArray
fSize elements
char * GetObjectAt(UInt_t ind) const
TClass * GetClass()
void SetSize(UInt_t size)
char * operator[](UInt_t ind) const
TClassRef fClass
TClass::ObjectPtr ObjectPtr
TVirtualArray(TClass *cl, UInt_t size)