Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-10-04 09:24:45

0001 // @(#)root/io:$Id: 697641b2b52ed3d97bb5bde0fb5d2ff4a2f6c24f $
0002 // Author: Rene Brun   17/01/2007
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT_TBufferFile
0013 #define ROOT_TBufferFile
0014 
0015 
0016 //////////////////////////////////////////////////////////////////////////
0017 //                                                                      //
0018 // TBufferFile                                                          //
0019 //                                                                      //
0020 // The concrete implementation of TBuffer for writing/reading to/from a //
0021 // ROOT file or socket.                                                 //
0022 //                                                                      //
0023 //////////////////////////////////////////////////////////////////////////
0024 
0025 #include "TBufferIO.h"
0026 #include "Bytes.h"
0027 
0028 #include <vector>
0029 #include <string>
0030 
0031 #ifdef R__OLDHPACC
0032 namespace std {
0033    using ::string;
0034    using ::vector;
0035 }
0036 #endif
0037 
0038 class TVirtualStreamerInfo;
0039 class TStreamerInfo;
0040 class TStreamerElement;
0041 class TClass;
0042 class TVirtualArray;
0043 namespace TStreamerInfoActions {
0044    class TActionSequence;
0045 }
0046 
0047 class TBufferFile : public TBufferIO {
0048 
0049 protected:
0050    typedef std::vector<TStreamerInfo*> InfoList_t;
0051 
0052    TStreamerInfo  *fInfo{nullptr};  ///< Pointer to TStreamerInfo object writing/reading the buffer
0053    InfoList_t      fInfoStack;     ///< Stack of pointers to the TStreamerInfos
0054 
0055    // Default ctor
0056    TBufferFile() {} // NOLINT: not allowed to use = default because of TObject::kIsOnHeap detection, see ROOT-10300
0057 
0058    // TBuffer objects cannot be copied or assigned
0059    TBufferFile(const TBufferFile &) = delete;       ///<  not implemented
0060    void operator=(const TBufferFile &) = delete;    ///<  not implemented
0061 
0062    Int_t  CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss, const char* classname);
0063    void  CheckCount(UInt_t offset) override;
0064    UInt_t CheckObject(UInt_t offset, const TClass *cl, Bool_t readClass = kFALSE);
0065 
0066    void  WriteObjectClass(const void *actualObjStart, const TClass *actualClass, Bool_t cacheReuse) override;
0067    bool ShouldNotReadCollection(Int_t lengthInBytes, Int_t nElements=1) const;
0068 
0069 public:
0070    enum { kStreamedMemberWise = BIT(14) }; //added to version number to know if a collection has been stored member-wise
0071 
0072    TBufferFile(TBuffer::EMode mode);
0073    TBufferFile(TBuffer::EMode mode, Int_t bufsize);
0074    TBufferFile(TBuffer::EMode mode, Int_t bufsize, void *buf, Bool_t adopt = kTRUE, ReAllocCharFun_t reallocfunc = nullptr);
0075    ~TBufferFile() override;
0076 
0077    Int_t      CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss) override;
0078    Int_t      CheckByteCount(UInt_t startpos, UInt_t bcnt, const char *classname) override;
0079    void       SetByteCount(UInt_t cntpos, Bool_t packInVersion = kFALSE) override;
0080 
0081    void       SkipVersion(const TClass *cl = nullptr) override;
0082    Version_t  ReadVersion(UInt_t *start = nullptr, UInt_t *bcnt = nullptr, const TClass *cl = nullptr) override;
0083    Version_t  ReadVersionNoCheckSum(UInt_t *start = nullptr, UInt_t *bcnt = nullptr) override;
0084    Version_t  ReadVersionForMemberWise(const TClass *cl = nullptr) override;
0085    UInt_t     WriteVersion(const TClass *cl, Bool_t useBcnt = kFALSE) override;
0086    UInt_t     WriteVersionMemberWise(const TClass *cl, Bool_t useBcnt = kFALSE) override;
0087 
0088    void      *ReadObjectAny(const TClass* cast) override;
0089    void       SkipObjectAny() override;
0090 
0091    void       IncrementLevel(TVirtualStreamerInfo* info) override;
0092    void       SetStreamerElementNumber(TStreamerElement*,Int_t) override {}
0093    void       DecrementLevel(TVirtualStreamerInfo*) override;
0094    TVirtualStreamerInfo  *GetInfo() override { return (TVirtualStreamerInfo*)fInfo; }
0095    void       ClassBegin(const TClass*, Version_t = -1) override {}
0096    void       ClassEnd(const TClass*) override {}
0097    void       ClassMember(const char*, const char * = nullptr, Int_t = -1, Int_t = -1) override {}
0098 
0099    Int_t      ReadBuf(void *buf, Int_t max) override;
0100    void       WriteBuf(const void *buf, Int_t max) override;
0101 
0102    char      *ReadString(char *s, Int_t max) override;
0103    void       WriteString(const char *s) override;
0104 
0105    TClass    *ReadClass(const TClass *cl = nullptr, UInt_t *objTag = nullptr) override;
0106    void       WriteClass(const TClass *cl) override;
0107 
0108    TObject   *ReadObject(const TClass *cl) override;
0109 
0110    using TBufferIO::CheckObject;
0111 
0112    // basic types and arrays of basic types
0113    void     ReadFloat16 (Float_t *f, TStreamerElement *ele = nullptr) override;
0114    void     WriteFloat16(Float_t *f, TStreamerElement *ele = nullptr) override;
0115    void     ReadDouble32 (Double_t *d, TStreamerElement *ele = nullptr) override;
0116    void     WriteDouble32(Double_t *d, TStreamerElement *ele = nullptr) override;
0117    void     ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue) override;
0118    void     ReadWithNbits(Float_t *ptr, Int_t nbits) override;
0119    void     ReadWithFactor(Double_t *ptr, Double_t factor, Double_t minvalue) override;
0120    void     ReadWithNbits(Double_t *ptr, Int_t nbits) override;
0121 
0122    Int_t    ReadArray(Bool_t    *&b) override;
0123    Int_t    ReadArray(Char_t    *&c) override;
0124    Int_t    ReadArray(UChar_t   *&c) override;
0125    Int_t    ReadArray(Short_t   *&h) override;
0126    Int_t    ReadArray(UShort_t  *&h) override;
0127    Int_t    ReadArray(Int_t     *&i) override;
0128    Int_t    ReadArray(UInt_t    *&i) override;
0129    Int_t    ReadArray(Long_t    *&l) override;
0130    Int_t    ReadArray(ULong_t   *&l) override;
0131    Int_t    ReadArray(Long64_t  *&l) override;
0132    Int_t    ReadArray(ULong64_t *&l) override;
0133    Int_t    ReadArray(Float_t   *&f) override;
0134    Int_t    ReadArray(Double_t  *&d) override;
0135    Int_t    ReadArrayFloat16(Float_t  *&f, TStreamerElement *ele = nullptr) override;
0136    Int_t    ReadArrayDouble32(Double_t  *&d, TStreamerElement *ele = nullptr) override;
0137 
0138    Int_t    ReadStaticArray(Bool_t    *b) override;
0139    Int_t    ReadStaticArray(Char_t    *c) override;
0140    Int_t    ReadStaticArray(UChar_t   *c) override;
0141    Int_t    ReadStaticArray(Short_t   *h) override;
0142    Int_t    ReadStaticArray(UShort_t  *h) override;
0143    Int_t    ReadStaticArray(Int_t     *i) override;
0144    Int_t    ReadStaticArray(UInt_t    *i) override;
0145    Int_t    ReadStaticArray(Long_t    *l) override;
0146    Int_t    ReadStaticArray(ULong_t   *l) override;
0147    Int_t    ReadStaticArray(Long64_t  *l) override;
0148    Int_t    ReadStaticArray(ULong64_t *l) override;
0149    Int_t    ReadStaticArray(Float_t   *f) override;
0150    Int_t    ReadStaticArray(Double_t  *d) override;
0151    Int_t    ReadStaticArrayFloat16(Float_t  *f, TStreamerElement *ele = nullptr) override;
0152    Int_t    ReadStaticArrayDouble32(Double_t  *d, TStreamerElement *ele = nullptr) override;
0153 
0154    void     ReadFastArray(Bool_t    *b, Int_t n) override;
0155    void     ReadFastArray(Char_t    *c, Int_t n) override;
0156    void     ReadFastArrayString(Char_t    *c, Int_t n) override;
0157    void     ReadFastArray(UChar_t   *c, Int_t n) override;
0158    void     ReadFastArray(Short_t   *h, Int_t n) override;
0159    void     ReadFastArray(UShort_t  *h, Int_t n) override;
0160    void     ReadFastArray(Int_t     *i, Int_t n) override;
0161    void     ReadFastArray(UInt_t    *i, Int_t n) override;
0162    void     ReadFastArray(Long_t    *l, Int_t n) override;
0163    void     ReadFastArray(ULong_t   *l, Int_t n) override;
0164    void     ReadFastArray(Long64_t  *l, Int_t n) override;
0165    void     ReadFastArray(ULong64_t *l, Int_t n) override;
0166    void     ReadFastArray(Float_t   *f, Int_t n) override;
0167    void     ReadFastArray(Double_t  *d, Int_t n) override;
0168    void     ReadFastArrayFloat16(Float_t  *f, Int_t n, TStreamerElement *ele = nullptr) override;
0169    void     ReadFastArrayDouble32(Double_t  *d, Int_t n, TStreamerElement *ele = nullptr) override;
0170    void     ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue)  override;
0171    void     ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits) override;
0172    void     ReadFastArrayWithFactor(Double_t *ptr, Int_t n, Double_t factor, Double_t minvalue) override;
0173    void     ReadFastArrayWithNbits(Double_t *ptr, Int_t n, Int_t nbits)  override;
0174    void     ReadFastArray(void  *start , const TClass *cl, Int_t n=1, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
0175    void     ReadFastArray(void **startp, const TClass *cl, Int_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
0176 
0177    void     WriteArray(const Bool_t    *b, Int_t n) override;
0178    void     WriteArray(const Char_t    *c, Int_t n) override;
0179    void     WriteArray(const UChar_t   *c, Int_t n) override;
0180    void     WriteArray(const Short_t   *h, Int_t n) override;
0181    void     WriteArray(const UShort_t  *h, Int_t n) override;
0182    void     WriteArray(const Int_t     *i, Int_t n) override;
0183    void     WriteArray(const UInt_t    *i, Int_t n) override;
0184    void     WriteArray(const Long_t    *l, Int_t n) override;
0185    void     WriteArray(const ULong_t   *l, Int_t n) override;
0186    void     WriteArray(const Long64_t  *l, Int_t n) override;
0187    void     WriteArray(const ULong64_t *l, Int_t n) override;
0188    void     WriteArray(const Float_t   *f, Int_t n) override;
0189    void     WriteArray(const Double_t  *d, Int_t n) override;
0190    void     WriteArrayFloat16(const Float_t  *f, Int_t n, TStreamerElement *ele = nullptr) override;
0191    void     WriteArrayDouble32(const Double_t  *d, Int_t n, TStreamerElement *ele = nullptr) override;
0192 
0193    void     WriteFastArray(const Bool_t    *b, Long64_t n) override;
0194    void     WriteFastArray(const Char_t    *c, Long64_t n) override;
0195    void     WriteFastArrayString(const Char_t    *c, Long64_t n) override;
0196    void     WriteFastArray(const UChar_t   *c, Long64_t n) override;
0197    void     WriteFastArray(const Short_t   *h, Long64_t n) override;
0198    void     WriteFastArray(const UShort_t  *h, Long64_t n) override;
0199    void     WriteFastArray(const Int_t     *i, Long64_t n) override;
0200    void     WriteFastArray(const UInt_t    *i, Long64_t n) override;
0201    void     WriteFastArray(const Long_t    *l, Long64_t n) override;
0202    void     WriteFastArray(const ULong_t   *l, Long64_t n) override;
0203    void     WriteFastArray(const Long64_t  *l, Long64_t n) override;
0204    void     WriteFastArray(const ULong64_t *l, Long64_t n) override;
0205    void     WriteFastArray(const Float_t   *f, Long64_t n) override;
0206    void     WriteFastArray(const Double_t  *d, Long64_t n) override;
0207    void     WriteFastArrayFloat16(const Float_t  *f, Long64_t n, TStreamerElement *ele = nullptr) override;
0208    void     WriteFastArrayDouble32(const Double_t  *d, Long64_t n, TStreamerElement *ele = nullptr) override;
0209    void     WriteFastArray(void  *start,  const TClass *cl, Long64_t n=1, TMemberStreamer *s = nullptr) override;
0210    Int_t    WriteFastArray(void **startp, const TClass *cl, Long64_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr) override;
0211 
0212    void     StreamObject(void *obj, const std::type_info &typeinfo, const TClass* onFileClass = nullptr) override;
0213    void     StreamObject(void *obj, const char *className, const TClass* onFileClass = nullptr) override;
0214    void     StreamObject(void *obj, const TClass *cl, const TClass* onFileClass = nullptr) override;
0215    void     StreamObject(TObject *obj) override;
0216 
0217    void     ReadBool(Bool_t       &b) override;
0218    void     ReadChar(Char_t       &c) override;
0219    void     ReadUChar(UChar_t     &c) override;
0220    void     ReadShort(Short_t     &s) override;
0221    void     ReadUShort(UShort_t   &s) override;
0222    void     ReadInt(Int_t         &i) override;
0223    void     ReadUInt(UInt_t       &i) override;
0224    void     ReadLong(Long_t       &l) override;
0225    void     ReadULong(ULong_t     &l) override;
0226    void     ReadLong64(Long64_t   &l) override;
0227    void     ReadULong64(ULong64_t &l) override;
0228    void     ReadFloat(Float_t     &f) override;
0229    void     ReadDouble(Double_t   &d) override;
0230    void     ReadCharP(Char_t      *c) override;
0231    void     ReadTString(TString   &s) override;
0232    void     ReadStdString(std::string *s) override;
0233    using    TBuffer::ReadStdString;
0234    void     ReadCharStar(char* &s) override;
0235 
0236    void     WriteBool(Bool_t       b) override;
0237    void     WriteChar(Char_t       c) override;
0238    void     WriteUChar(UChar_t     c) override;
0239    void     WriteShort(Short_t     s) override;
0240    void     WriteUShort(UShort_t   s) override;
0241    void     WriteInt(Int_t         i) override;
0242    void     WriteUInt(UInt_t       i) override;
0243    void     WriteLong(Long_t       l) override;
0244    void     WriteULong(ULong_t     l) override;
0245    void     WriteLong64(Long64_t   l) override;
0246    void     WriteULong64(ULong64_t l) override;
0247    void     WriteFloat(Float_t     f) override;
0248    void     WriteDouble(Double_t   d) override;
0249    void     WriteCharP(const Char_t *c) override;
0250    void     WriteTString(const TString &s) override;
0251    using    TBuffer::WriteStdString;
0252    void     WriteStdString(const std::string *s) override;
0253    void     WriteCharStar(char *s) override;
0254 
0255    // Utilities for TClass
0256    Int_t  ReadClassEmulated(const TClass *cl, void *object, const TClass *onfile_class) override;
0257    Int_t  ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class) override;
0258    Int_t  ReadClassBuffer(const TClass *cl, void *pointer, Int_t version, UInt_t start, UInt_t count, const TClass *onfile_class) override;
0259    Int_t  WriteClassBuffer(const TClass *cl, void *pointer) override;
0260 
0261    // Utilities to streamer using sequences.
0262    Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object) override;
0263    Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
0264    Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
0265 
0266    ClassDefOverride(TBufferFile,0)  //concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
0267 };
0268 
0269 
0270 //---------------------- TBufferFile inlines ---------------------------------------
0271 
0272 //______________________________________________________________________________
0273 inline bool TBufferFile::ShouldNotReadCollection(Int_t lengthInBytes, Int_t nElements) const
0274 {
0275    // Three cases here in which we should not read the collection:
0276    // 1. The collection has zero or a negative number of elements or
0277    // 2. The length in bytes of the collection is zero or negative
0278    // 3. The remaining part of the buffer is too short to read the collection
0279    return nElements <= 0 || lengthInBytes <= 0 || (size_t)lengthInBytes > (size_t)(fBufMax - fBufCur);
0280 }
0281 
0282 //______________________________________________________________________________
0283 inline void TBufferFile::WriteBool(Bool_t b)
0284 {
0285    if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
0286    tobuf(fBufCur, b);
0287 }
0288 
0289 //______________________________________________________________________________
0290 inline void TBufferFile::WriteChar(Char_t c)
0291 {
0292    if (fBufCur + sizeof(Char_t) > fBufMax) AutoExpand(fBufSize+sizeof(Char_t));
0293    tobuf(fBufCur, c);
0294 }
0295 
0296 //______________________________________________________________________________
0297 inline void TBufferFile::WriteUChar(UChar_t c)
0298 {
0299    if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
0300    tobuf(fBufCur, (Char_t)c);
0301 }
0302 
0303 //______________________________________________________________________________
0304 inline void TBufferFile::WriteShort(Short_t h)
0305 {
0306    if (fBufCur + sizeof(Short_t) > fBufMax) AutoExpand(fBufSize+sizeof(Short_t));
0307    tobuf(fBufCur, h);
0308 }
0309 
0310 //______________________________________________________________________________
0311 inline void TBufferFile::WriteUShort(UShort_t h)
0312 {
0313    if (fBufCur + sizeof(UShort_t) > fBufMax) AutoExpand(fBufSize+sizeof(UShort_t));
0314    tobuf(fBufCur, (Short_t)h);
0315 }
0316 
0317 //______________________________________________________________________________
0318 inline void TBufferFile::WriteInt(Int_t i)
0319 {
0320    if (fBufCur + sizeof(Int_t) > fBufMax) AutoExpand(fBufSize+sizeof(Int_t));
0321    tobuf(fBufCur, i);
0322 }
0323 
0324 //______________________________________________________________________________
0325 inline void TBufferFile::WriteUInt(UInt_t i)
0326 {
0327    if (fBufCur + sizeof(UInt_t) > fBufMax) AutoExpand(fBufSize+sizeof(UInt_t));
0328    tobuf(fBufCur, (Int_t)i);
0329 }
0330 
0331 //______________________________________________________________________________
0332 inline void TBufferFile::WriteLong(Long_t l)
0333 {
0334    if (fBufCur + sizeof(Long_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long_t));
0335    tobuf(fBufCur, l);
0336 }
0337 
0338 //______________________________________________________________________________
0339 inline void TBufferFile::WriteULong(ULong_t l)
0340 {
0341    if (fBufCur + sizeof(ULong_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong_t));
0342    tobuf(fBufCur, (Long_t)l);
0343 }
0344 
0345 //______________________________________________________________________________
0346 inline void TBufferFile::WriteLong64(Long64_t ll)
0347 {
0348    if (fBufCur + sizeof(Long64_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long64_t));
0349    tobuf(fBufCur, ll);
0350 }
0351 
0352 //______________________________________________________________________________
0353 inline void TBufferFile::WriteULong64(ULong64_t ll)
0354 {
0355    if (fBufCur + sizeof(ULong64_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong64_t));
0356    tobuf(fBufCur, (Long64_t)ll);
0357 }
0358 
0359 //______________________________________________________________________________
0360 inline void TBufferFile::WriteFloat(Float_t f)
0361 {
0362    if (fBufCur + sizeof(Float_t) > fBufMax) AutoExpand(fBufSize+sizeof(Float_t));
0363    tobuf(fBufCur, f);
0364 }
0365 
0366 //______________________________________________________________________________
0367 inline void TBufferFile::WriteDouble(Double_t d)
0368 {
0369    if (fBufCur + sizeof(Double_t) > fBufMax) AutoExpand(fBufSize+sizeof(Double_t));
0370    tobuf(fBufCur, d);
0371 }
0372 
0373 //______________________________________________________________________________
0374 inline void TBufferFile::WriteCharP(const Char_t *c)
0375 {
0376    WriteString(c);
0377 }
0378 
0379 //______________________________________________________________________________
0380 inline void TBufferFile::ReadBool(Bool_t &b)
0381 {
0382    frombuf(fBufCur, &b);
0383 }
0384 
0385 //______________________________________________________________________________
0386 inline void TBufferFile::ReadChar(Char_t &c)
0387 {
0388    frombuf(fBufCur, &c);
0389 }
0390 
0391 //______________________________________________________________________________
0392 inline void TBufferFile::ReadUChar(UChar_t &c)
0393 {
0394    TBufferFile::ReadChar((Char_t &)c);
0395 }
0396 
0397 //______________________________________________________________________________
0398 inline void TBufferFile::ReadShort(Short_t &h)
0399 {
0400    frombuf(fBufCur, &h);
0401 }
0402 
0403 //______________________________________________________________________________
0404 inline void TBufferFile::ReadUShort(UShort_t &h)
0405 {
0406    TBufferFile::ReadShort((Short_t &)h);
0407 }
0408 
0409 //______________________________________________________________________________
0410 inline void TBufferFile::ReadInt(Int_t &i)
0411 {
0412    frombuf(fBufCur, &i);
0413 }
0414 
0415 //______________________________________________________________________________
0416 inline void TBufferFile::ReadUInt(UInt_t &i)
0417 {
0418    TBufferFile::ReadInt((Int_t &)i);
0419 }
0420 
0421 
0422 // in implementation file because special case with old version
0423 //______________________________________________________________________________
0424 //inline void TBufferFile::ReadLong(Long_t &ll)
0425 //{
0426 //   frombuf(fBufCur, &ll);
0427 //}
0428 
0429 //______________________________________________________________________________
0430 inline void TBufferFile::ReadULong(ULong_t &ll)
0431 {
0432    TBufferFile::ReadLong((Long_t&)ll);
0433 }
0434 
0435 
0436 //______________________________________________________________________________
0437 inline void TBufferFile::ReadLong64(Long64_t &ll)
0438 {
0439    frombuf(fBufCur, &ll);
0440 }
0441 
0442 //______________________________________________________________________________
0443 inline void TBufferFile::ReadULong64(ULong64_t &ll)
0444 {
0445    TBufferFile::ReadLong64((Long64_t &)ll);
0446 }
0447 
0448 //______________________________________________________________________________
0449 inline void TBufferFile::ReadFloat(Float_t &f)
0450 {
0451    frombuf(fBufCur, &f);
0452 }
0453 
0454 //______________________________________________________________________________
0455 inline void TBufferFile::ReadDouble(Double_t &d)
0456 {
0457    frombuf(fBufCur, &d);
0458 }
0459 
0460 //______________________________________________________________________________
0461 inline void TBufferFile::ReadCharP(Char_t *c)
0462 {
0463    ReadString(c, -1);
0464 }
0465 
0466 //______________________________________________________________________________
0467 inline Int_t TBufferFile::ReadArray(UChar_t *&c)
0468    {  return TBufferFile::ReadArray((Char_t *&)c); }
0469 //______________________________________________________________________________
0470 inline Int_t TBufferFile::ReadArray(UShort_t *&h)
0471    {  return TBufferFile::ReadArray((Short_t *&)h); }
0472 //______________________________________________________________________________
0473 inline Int_t TBufferFile::ReadArray(UInt_t *&i)
0474    {  return TBufferFile::ReadArray((Int_t *&)i); }
0475 //______________________________________________________________________________
0476 inline Int_t TBufferFile::ReadArray(ULong_t *&l)
0477    {  return TBufferFile::ReadArray((Long_t *&)l); }
0478 //______________________________________________________________________________
0479 inline Int_t TBufferFile::ReadArray(ULong64_t *&ll)
0480    {  return TBufferFile::ReadArray((Long64_t *&)ll); }
0481 
0482 //______________________________________________________________________________
0483 inline Int_t TBufferFile::ReadStaticArray(UChar_t *c)
0484    {  return TBufferFile::ReadStaticArray((Char_t *)c); }
0485 //______________________________________________________________________________
0486 inline Int_t TBufferFile::ReadStaticArray(UShort_t *h)
0487    {  return TBufferFile::ReadStaticArray((Short_t *)h); }
0488 //______________________________________________________________________________
0489 inline Int_t TBufferFile::ReadStaticArray(UInt_t *i)
0490    {  return TBufferFile::ReadStaticArray((Int_t *)i); }
0491 //______________________________________________________________________________
0492 inline Int_t TBufferFile::ReadStaticArray(ULong_t *l)
0493    {  return TBufferFile::ReadStaticArray((Long_t *)l); }
0494 //______________________________________________________________________________
0495 inline Int_t TBufferFile::ReadStaticArray(ULong64_t *ll)
0496    {  return TBufferFile::ReadStaticArray((Long64_t *)ll); }
0497 
0498 //______________________________________________________________________________
0499 inline void TBufferFile::ReadFastArray(UChar_t *c, Int_t n)
0500    {        TBufferFile::ReadFastArray((Char_t *)c, n); }
0501 //______________________________________________________________________________
0502 inline void TBufferFile::ReadFastArray(UShort_t *h, Int_t n)
0503    {        TBufferFile::ReadFastArray((Short_t *)h, n); }
0504 //______________________________________________________________________________
0505 inline void TBufferFile::ReadFastArray(UInt_t *i, Int_t n)
0506    {        TBufferFile::ReadFastArray((Int_t *)i, n); }
0507 //______________________________________________________________________________
0508 inline void TBufferFile::ReadFastArray(ULong_t *l, Int_t n)
0509    {        TBufferFile::ReadFastArray((Long_t *)l, n); }
0510 //______________________________________________________________________________
0511 inline void TBufferFile::ReadFastArray(ULong64_t *ll, Int_t n)
0512    {        TBufferFile::ReadFastArray((Long64_t *)ll, n); }
0513 
0514 //______________________________________________________________________________
0515 inline void TBufferFile::WriteArray(const UChar_t *c, Int_t n)
0516    {        TBufferFile::WriteArray((const Char_t *)c, n); }
0517 //______________________________________________________________________________
0518 inline void TBufferFile::WriteArray(const UShort_t *h, Int_t n)
0519    {        TBufferFile::WriteArray((const Short_t *)h, n); }
0520 //______________________________________________________________________________
0521 inline void TBufferFile::WriteArray(const UInt_t *i, Int_t n)
0522    {        TBufferFile::WriteArray((const Int_t *)i, n); }
0523 //______________________________________________________________________________
0524 inline void TBufferFile::WriteArray(const ULong64_t *ll, Int_t n)
0525    {        TBufferFile::WriteArray((const Long64_t *)ll, n); }
0526 
0527 //______________________________________________________________________________
0528 inline void TBufferFile::WriteFastArray(const UChar_t *c, Long64_t n)
0529    {        TBufferFile::WriteFastArray((const Char_t *)c, n); }
0530 //______________________________________________________________________________
0531 inline void TBufferFile::WriteFastArray(const UShort_t *h, Long64_t n)
0532    {        TBufferFile::WriteFastArray((const Short_t *)h, n); }
0533 //______________________________________________________________________________
0534 inline void TBufferFile::WriteFastArray(const UInt_t *i, Long64_t n)
0535    {        TBufferFile::WriteFastArray((const Int_t *)i, n); }
0536 //______________________________________________________________________________
0537 inline void TBufferFile::WriteFastArray(const ULong64_t *ll, Long64_t n)
0538    {        TBufferFile::WriteFastArray((const Long64_t *)ll, n); }
0539 
0540 #endif