Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /include/root/TBufferFile.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

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 
0068 public:
0069    enum { kStreamedMemberWise = BIT(14) }; //added to version number to know if a collection has been stored member-wise
0070 
0071    TBufferFile(TBuffer::EMode mode);
0072    TBufferFile(TBuffer::EMode mode, Int_t bufsiz);
0073    TBufferFile(TBuffer::EMode mode, Int_t bufsiz, void *buf, Bool_t adopt = kTRUE, ReAllocCharFun_t reallocfunc = nullptr);
0074    ~TBufferFile() override;
0075 
0076    Int_t      CheckByteCount(UInt_t startpos, UInt_t bcnt, const TClass *clss) override;
0077    Int_t      CheckByteCount(UInt_t startpos, UInt_t bcnt, const char *classname) override;
0078    void       SetByteCount(UInt_t cntpos, Bool_t packInVersion = kFALSE) override;
0079 
0080    void       SkipVersion(const TClass *cl = nullptr) override;
0081    Version_t  ReadVersion(UInt_t *start = nullptr, UInt_t *bcnt = nullptr, const TClass *cl = nullptr) override;
0082    Version_t  ReadVersionNoCheckSum(UInt_t *start = nullptr, UInt_t *bcnt = nullptr) override;
0083    Version_t  ReadVersionForMemberWise(const TClass *cl = nullptr) override;
0084    UInt_t     WriteVersion(const TClass *cl, Bool_t useBcnt = kFALSE) override;
0085    UInt_t     WriteVersionMemberWise(const TClass *cl, Bool_t useBcnt = kFALSE) override;
0086 
0087    void      *ReadObjectAny(const TClass* cast) override;
0088    void       SkipObjectAny() override;
0089 
0090    void       IncrementLevel(TVirtualStreamerInfo* info) override;
0091    void       SetStreamerElementNumber(TStreamerElement*,Int_t) override {}
0092    void       DecrementLevel(TVirtualStreamerInfo*) override;
0093    TVirtualStreamerInfo  *GetInfo() override { return (TVirtualStreamerInfo*)fInfo; }
0094    void       ClassBegin(const TClass*, Version_t = -1) override {}
0095    void       ClassEnd(const TClass*) override {}
0096    void       ClassMember(const char*, const char * = nullptr, Int_t = -1, Int_t = -1) override {}
0097 
0098    Int_t      ReadBuf(void *buf, Int_t max) override;
0099    void       WriteBuf(const void *buf, Int_t max) override;
0100 
0101    char      *ReadString(char *s, Int_t max) override;
0102    void       WriteString(const char *s) override;
0103 
0104    TClass    *ReadClass(const TClass *cl = nullptr, UInt_t *objTag = nullptr) override;
0105    void       WriteClass(const TClass *cl) override;
0106 
0107    TObject   *ReadObject(const TClass *cl) override;
0108 
0109    using TBufferIO::CheckObject;
0110 
0111    // basic types and arrays of basic types
0112    void     ReadFloat16 (Float_t *f, TStreamerElement *ele = nullptr) override;
0113    void     WriteFloat16(Float_t *f, TStreamerElement *ele = nullptr) override;
0114    void     ReadDouble32 (Double_t *d, TStreamerElement *ele = nullptr) override;
0115    void     WriteDouble32(Double_t *d, TStreamerElement *ele = nullptr) override;
0116    void     ReadWithFactor(Float_t *ptr, Double_t factor, Double_t minvalue) override;
0117    void     ReadWithNbits(Float_t *ptr, Int_t nbits) override;
0118    void     ReadWithFactor(Double_t *ptr, Double_t factor, Double_t minvalue) override;
0119    void     ReadWithNbits(Double_t *ptr, Int_t nbits) override;
0120 
0121    Int_t    ReadArray(Bool_t    *&b) override;
0122    Int_t    ReadArray(Char_t    *&c) override;
0123    Int_t    ReadArray(UChar_t   *&c) override;
0124    Int_t    ReadArray(Short_t   *&h) override;
0125    Int_t    ReadArray(UShort_t  *&h) override;
0126    Int_t    ReadArray(Int_t     *&i) override;
0127    Int_t    ReadArray(UInt_t    *&i) override;
0128    Int_t    ReadArray(Long_t    *&l) override;
0129    Int_t    ReadArray(ULong_t   *&l) override;
0130    Int_t    ReadArray(Long64_t  *&l) override;
0131    Int_t    ReadArray(ULong64_t *&l) override;
0132    Int_t    ReadArray(Float_t   *&f) override;
0133    Int_t    ReadArray(Double_t  *&d) override;
0134    Int_t    ReadArrayFloat16(Float_t  *&f, TStreamerElement *ele = nullptr) override;
0135    Int_t    ReadArrayDouble32(Double_t  *&d, TStreamerElement *ele = nullptr) override;
0136 
0137    Int_t    ReadStaticArray(Bool_t    *b) override;
0138    Int_t    ReadStaticArray(Char_t    *c) override;
0139    Int_t    ReadStaticArray(UChar_t   *c) override;
0140    Int_t    ReadStaticArray(Short_t   *h) override;
0141    Int_t    ReadStaticArray(UShort_t  *h) override;
0142    Int_t    ReadStaticArray(Int_t     *i) override;
0143    Int_t    ReadStaticArray(UInt_t    *i) override;
0144    Int_t    ReadStaticArray(Long_t    *l) override;
0145    Int_t    ReadStaticArray(ULong_t   *l) override;
0146    Int_t    ReadStaticArray(Long64_t  *l) override;
0147    Int_t    ReadStaticArray(ULong64_t *l) override;
0148    Int_t    ReadStaticArray(Float_t   *f) override;
0149    Int_t    ReadStaticArray(Double_t  *d) override;
0150    Int_t    ReadStaticArrayFloat16(Float_t  *f, TStreamerElement *ele = nullptr) override;
0151    Int_t    ReadStaticArrayDouble32(Double_t  *d, TStreamerElement *ele = nullptr) override;
0152 
0153    void     ReadFastArray(Bool_t    *b, Int_t n) override;
0154    void     ReadFastArray(Char_t    *c, Int_t n) override;
0155    void     ReadFastArrayString(Char_t    *c, Int_t n) override;
0156    void     ReadFastArray(UChar_t   *c, Int_t n) override;
0157    void     ReadFastArray(Short_t   *h, Int_t n) override;
0158    void     ReadFastArray(UShort_t  *h, Int_t n) override;
0159    void     ReadFastArray(Int_t     *i, Int_t n) override;
0160    void     ReadFastArray(UInt_t    *i, Int_t n) override;
0161    void     ReadFastArray(Long_t    *l, Int_t n) override;
0162    void     ReadFastArray(ULong_t   *l, Int_t n) override;
0163    void     ReadFastArray(Long64_t  *l, Int_t n) override;
0164    void     ReadFastArray(ULong64_t *l, Int_t n) override;
0165    void     ReadFastArray(Float_t   *f, Int_t n) override;
0166    void     ReadFastArray(Double_t  *d, Int_t n) override;
0167    void     ReadFastArrayFloat16(Float_t  *f, Int_t n, TStreamerElement *ele = nullptr) override;
0168    void     ReadFastArrayDouble32(Double_t  *d, Int_t n, TStreamerElement *ele = nullptr) override;
0169    void     ReadFastArrayWithFactor(Float_t *ptr, Int_t n, Double_t factor, Double_t minvalue)  override;
0170    void     ReadFastArrayWithNbits(Float_t *ptr, Int_t n, Int_t nbits) override;
0171    void     ReadFastArrayWithFactor(Double_t *ptr, Int_t n, Double_t factor, Double_t minvalue) override;
0172    void     ReadFastArrayWithNbits(Double_t *ptr, Int_t n, Int_t nbits)  override;
0173    void     ReadFastArray(void  *start , const TClass *cl, Int_t n=1, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
0174    void     ReadFastArray(void **startp, const TClass *cl, Int_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr, const TClass* onFileClass = nullptr) override;
0175 
0176    void     WriteArray(const Bool_t    *b, Int_t n) override;
0177    void     WriteArray(const Char_t    *c, Int_t n) override;
0178    void     WriteArray(const UChar_t   *c, Int_t n) override;
0179    void     WriteArray(const Short_t   *h, Int_t n) override;
0180    void     WriteArray(const UShort_t  *h, Int_t n) override;
0181    void     WriteArray(const Int_t     *i, Int_t n) override;
0182    void     WriteArray(const UInt_t    *i, Int_t n) override;
0183    void     WriteArray(const Long_t    *l, Int_t n) override;
0184    void     WriteArray(const ULong_t   *l, Int_t n) override;
0185    void     WriteArray(const Long64_t  *l, Int_t n) override;
0186    void     WriteArray(const ULong64_t *l, Int_t n) override;
0187    void     WriteArray(const Float_t   *f, Int_t n) override;
0188    void     WriteArray(const Double_t  *d, Int_t n) override;
0189    void     WriteArrayFloat16(const Float_t  *f, Int_t n, TStreamerElement *ele = nullptr) override;
0190    void     WriteArrayDouble32(const Double_t  *d, Int_t n, TStreamerElement *ele = nullptr) override;
0191 
0192    void     WriteFastArray(const Bool_t    *b, Long64_t n) override;
0193    void     WriteFastArray(const Char_t    *c, Long64_t n) override;
0194    void     WriteFastArrayString(const Char_t    *c, Long64_t n) override;
0195    void     WriteFastArray(const UChar_t   *c, Long64_t n) override;
0196    void     WriteFastArray(const Short_t   *h, Long64_t n) override;
0197    void     WriteFastArray(const UShort_t  *h, Long64_t n) override;
0198    void     WriteFastArray(const Int_t     *i, Long64_t n) override;
0199    void     WriteFastArray(const UInt_t    *i, Long64_t n) override;
0200    void     WriteFastArray(const Long_t    *l, Long64_t n) override;
0201    void     WriteFastArray(const ULong_t   *l, Long64_t n) override;
0202    void     WriteFastArray(const Long64_t  *l, Long64_t n) override;
0203    void     WriteFastArray(const ULong64_t *l, Long64_t n) override;
0204    void     WriteFastArray(const Float_t   *f, Long64_t n) override;
0205    void     WriteFastArray(const Double_t  *d, Long64_t n) override;
0206    void     WriteFastArrayFloat16(const Float_t  *f, Long64_t n, TStreamerElement *ele = nullptr) override;
0207    void     WriteFastArrayDouble32(const Double_t  *d, Long64_t n, TStreamerElement *ele = nullptr) override;
0208    void     WriteFastArray(void  *start,  const TClass *cl, Long64_t n=1, TMemberStreamer *s = nullptr) override;
0209    Int_t    WriteFastArray(void **startp, const TClass *cl, Long64_t n=1, Bool_t isPreAlloc=kFALSE, TMemberStreamer *s = nullptr) override;
0210 
0211    void     StreamObject(void *obj, const std::type_info &typeinfo, const TClass* onFileClass = nullptr) override;
0212    void     StreamObject(void *obj, const char *className, const TClass* onFileClass = nullptr) override;
0213    void     StreamObject(void *obj, const TClass *cl, const TClass* onFileClass = nullptr) override;
0214    void     StreamObject(TObject *obj) override;
0215 
0216    void     ReadBool(Bool_t       &b) override;
0217    void     ReadChar(Char_t       &c) override;
0218    void     ReadUChar(UChar_t     &c) override;
0219    void     ReadShort(Short_t     &s) override;
0220    void     ReadUShort(UShort_t   &s) override;
0221    void     ReadInt(Int_t         &i) override;
0222    void     ReadUInt(UInt_t       &i) override;
0223    void     ReadLong(Long_t       &l) override;
0224    void     ReadULong(ULong_t     &l) override;
0225    void     ReadLong64(Long64_t   &l) override;
0226    void     ReadULong64(ULong64_t &l) override;
0227    void     ReadFloat(Float_t     &f) override;
0228    void     ReadDouble(Double_t   &d) override;
0229    void     ReadCharP(Char_t      *c) override;
0230    void     ReadTString(TString   &s) override;
0231    void     ReadStdString(std::string *s) override;
0232    using    TBuffer::ReadStdString;
0233    void     ReadCharStar(char* &s) override;
0234 
0235    void     WriteBool(Bool_t       b) override;
0236    void     WriteChar(Char_t       c) override;
0237    void     WriteUChar(UChar_t     c) override;
0238    void     WriteShort(Short_t     s) override;
0239    void     WriteUShort(UShort_t   s) override;
0240    void     WriteInt(Int_t         i) override;
0241    void     WriteUInt(UInt_t       i) override;
0242    void     WriteLong(Long_t       l) override;
0243    void     WriteULong(ULong_t     l) override;
0244    void     WriteLong64(Long64_t   l) override;
0245    void     WriteULong64(ULong64_t l) override;
0246    void     WriteFloat(Float_t     f) override;
0247    void     WriteDouble(Double_t   d) override;
0248    void     WriteCharP(const Char_t *c) override;
0249    void     WriteTString(const TString &s) override;
0250    using    TBuffer::WriteStdString;
0251    void     WriteStdString(const std::string *s) override;
0252    void     WriteCharStar(char *s) override;
0253 
0254    // Utilities for TClass
0255    Int_t  ReadClassEmulated(const TClass *cl, void *object, const TClass *onfile_class) override;
0256    Int_t  ReadClassBuffer(const TClass *cl, void *pointer, const TClass *onfile_class) override;
0257    Int_t  ReadClassBuffer(const TClass *cl, void *pointer, Int_t version, UInt_t start, UInt_t count, const TClass *onfile_class) override;
0258    Int_t  WriteClassBuffer(const TClass *cl, void *pointer) override;
0259 
0260    // Utilities to streamer using sequences.
0261    Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *object) override;
0262    Int_t ApplySequenceVecPtr(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
0263    Int_t ApplySequence(const TStreamerInfoActions::TActionSequence &sequence, void *start_collection, void *end_collection) override;
0264 
0265    ClassDefOverride(TBufferFile,0)  //concrete implementation of TBuffer for writing/reading to/from a ROOT file or socket.
0266 };
0267 
0268 
0269 //---------------------- TBufferFile inlines ---------------------------------------
0270 
0271 //______________________________________________________________________________
0272 inline void TBufferFile::WriteBool(Bool_t b)
0273 {
0274    if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
0275    tobuf(fBufCur, b);
0276 }
0277 
0278 //______________________________________________________________________________
0279 inline void TBufferFile::WriteChar(Char_t c)
0280 {
0281    if (fBufCur + sizeof(Char_t) > fBufMax) AutoExpand(fBufSize+sizeof(Char_t));
0282    tobuf(fBufCur, c);
0283 }
0284 
0285 //______________________________________________________________________________
0286 inline void TBufferFile::WriteUChar(UChar_t c)
0287 {
0288    if (fBufCur + sizeof(UChar_t) > fBufMax) AutoExpand(fBufSize+sizeof(UChar_t));
0289    tobuf(fBufCur, (Char_t)c);
0290 }
0291 
0292 //______________________________________________________________________________
0293 inline void TBufferFile::WriteShort(Short_t h)
0294 {
0295    if (fBufCur + sizeof(Short_t) > fBufMax) AutoExpand(fBufSize+sizeof(Short_t));
0296    tobuf(fBufCur, h);
0297 }
0298 
0299 //______________________________________________________________________________
0300 inline void TBufferFile::WriteUShort(UShort_t h)
0301 {
0302    if (fBufCur + sizeof(UShort_t) > fBufMax) AutoExpand(fBufSize+sizeof(UShort_t));
0303    tobuf(fBufCur, (Short_t)h);
0304 }
0305 
0306 //______________________________________________________________________________
0307 inline void TBufferFile::WriteInt(Int_t i)
0308 {
0309    if (fBufCur + sizeof(Int_t) > fBufMax) AutoExpand(fBufSize+sizeof(Int_t));
0310    tobuf(fBufCur, i);
0311 }
0312 
0313 //______________________________________________________________________________
0314 inline void TBufferFile::WriteUInt(UInt_t i)
0315 {
0316    if (fBufCur + sizeof(UInt_t) > fBufMax) AutoExpand(fBufSize+sizeof(UInt_t));
0317    tobuf(fBufCur, (Int_t)i);
0318 }
0319 
0320 //______________________________________________________________________________
0321 inline void TBufferFile::WriteLong(Long_t l)
0322 {
0323    if (fBufCur + sizeof(Long_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long_t));
0324    tobuf(fBufCur, l);
0325 }
0326 
0327 //______________________________________________________________________________
0328 inline void TBufferFile::WriteULong(ULong_t l)
0329 {
0330    if (fBufCur + sizeof(ULong_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong_t));
0331    tobuf(fBufCur, (Long_t)l);
0332 }
0333 
0334 //______________________________________________________________________________
0335 inline void TBufferFile::WriteLong64(Long64_t ll)
0336 {
0337    if (fBufCur + sizeof(Long64_t) > fBufMax) AutoExpand(fBufSize+sizeof(Long64_t));
0338    tobuf(fBufCur, ll);
0339 }
0340 
0341 //______________________________________________________________________________
0342 inline void TBufferFile::WriteULong64(ULong64_t ll)
0343 {
0344    if (fBufCur + sizeof(ULong64_t) > fBufMax) AutoExpand(fBufSize+sizeof(ULong64_t));
0345    tobuf(fBufCur, (Long64_t)ll);
0346 }
0347 
0348 //______________________________________________________________________________
0349 inline void TBufferFile::WriteFloat(Float_t f)
0350 {
0351    if (fBufCur + sizeof(Float_t) > fBufMax) AutoExpand(fBufSize+sizeof(Float_t));
0352    tobuf(fBufCur, f);
0353 }
0354 
0355 //______________________________________________________________________________
0356 inline void TBufferFile::WriteDouble(Double_t d)
0357 {
0358    if (fBufCur + sizeof(Double_t) > fBufMax) AutoExpand(fBufSize+sizeof(Double_t));
0359    tobuf(fBufCur, d);
0360 }
0361 
0362 //______________________________________________________________________________
0363 inline void TBufferFile::WriteCharP(const Char_t *c)
0364 {
0365    WriteString(c);
0366 }
0367 
0368 //______________________________________________________________________________
0369 inline void TBufferFile::ReadBool(Bool_t &b)
0370 {
0371    frombuf(fBufCur, &b);
0372 }
0373 
0374 //______________________________________________________________________________
0375 inline void TBufferFile::ReadChar(Char_t &c)
0376 {
0377    frombuf(fBufCur, &c);
0378 }
0379 
0380 //______________________________________________________________________________
0381 inline void TBufferFile::ReadUChar(UChar_t &c)
0382 {
0383    TBufferFile::ReadChar((Char_t &)c);
0384 }
0385 
0386 //______________________________________________________________________________
0387 inline void TBufferFile::ReadShort(Short_t &h)
0388 {
0389    frombuf(fBufCur, &h);
0390 }
0391 
0392 //______________________________________________________________________________
0393 inline void TBufferFile::ReadUShort(UShort_t &h)
0394 {
0395    TBufferFile::ReadShort((Short_t &)h);
0396 }
0397 
0398 //______________________________________________________________________________
0399 inline void TBufferFile::ReadInt(Int_t &i)
0400 {
0401    frombuf(fBufCur, &i);
0402 }
0403 
0404 //______________________________________________________________________________
0405 inline void TBufferFile::ReadUInt(UInt_t &i)
0406 {
0407    TBufferFile::ReadInt((Int_t &)i);
0408 }
0409 
0410 
0411 // in implementation file because special case with old version
0412 //______________________________________________________________________________
0413 //inline void TBufferFile::ReadLong(Long_t &ll)
0414 //{
0415 //   frombuf(fBufCur, &ll);
0416 //}
0417 
0418 //______________________________________________________________________________
0419 inline void TBufferFile::ReadULong(ULong_t &ll)
0420 {
0421    TBufferFile::ReadLong((Long_t&)ll);
0422 }
0423 
0424 
0425 //______________________________________________________________________________
0426 inline void TBufferFile::ReadLong64(Long64_t &ll)
0427 {
0428    frombuf(fBufCur, &ll);
0429 }
0430 
0431 //______________________________________________________________________________
0432 inline void TBufferFile::ReadULong64(ULong64_t &ll)
0433 {
0434    TBufferFile::ReadLong64((Long64_t &)ll);
0435 }
0436 
0437 //______________________________________________________________________________
0438 inline void TBufferFile::ReadFloat(Float_t &f)
0439 {
0440    frombuf(fBufCur, &f);
0441 }
0442 
0443 //______________________________________________________________________________
0444 inline void TBufferFile::ReadDouble(Double_t &d)
0445 {
0446    frombuf(fBufCur, &d);
0447 }
0448 
0449 //______________________________________________________________________________
0450 inline void TBufferFile::ReadCharP(Char_t *c)
0451 {
0452    ReadString(c, -1);
0453 }
0454 
0455 //______________________________________________________________________________
0456 inline Int_t TBufferFile::ReadArray(UChar_t *&c)
0457    {  return TBufferFile::ReadArray((Char_t *&)c); }
0458 //______________________________________________________________________________
0459 inline Int_t TBufferFile::ReadArray(UShort_t *&h)
0460    {  return TBufferFile::ReadArray((Short_t *&)h); }
0461 //______________________________________________________________________________
0462 inline Int_t TBufferFile::ReadArray(UInt_t *&i)
0463    {  return TBufferFile::ReadArray((Int_t *&)i); }
0464 //______________________________________________________________________________
0465 inline Int_t TBufferFile::ReadArray(ULong_t *&l)
0466    {  return TBufferFile::ReadArray((Long_t *&)l); }
0467 //______________________________________________________________________________
0468 inline Int_t TBufferFile::ReadArray(ULong64_t *&ll)
0469    {  return TBufferFile::ReadArray((Long64_t *&)ll); }
0470 
0471 //______________________________________________________________________________
0472 inline Int_t TBufferFile::ReadStaticArray(UChar_t *c)
0473    {  return TBufferFile::ReadStaticArray((Char_t *)c); }
0474 //______________________________________________________________________________
0475 inline Int_t TBufferFile::ReadStaticArray(UShort_t *h)
0476    {  return TBufferFile::ReadStaticArray((Short_t *)h); }
0477 //______________________________________________________________________________
0478 inline Int_t TBufferFile::ReadStaticArray(UInt_t *i)
0479    {  return TBufferFile::ReadStaticArray((Int_t *)i); }
0480 //______________________________________________________________________________
0481 inline Int_t TBufferFile::ReadStaticArray(ULong_t *l)
0482    {  return TBufferFile::ReadStaticArray((Long_t *)l); }
0483 //______________________________________________________________________________
0484 inline Int_t TBufferFile::ReadStaticArray(ULong64_t *ll)
0485    {  return TBufferFile::ReadStaticArray((Long64_t *)ll); }
0486 
0487 //______________________________________________________________________________
0488 inline void TBufferFile::ReadFastArray(UChar_t *c, Int_t n)
0489    {        TBufferFile::ReadFastArray((Char_t *)c, n); }
0490 //______________________________________________________________________________
0491 inline void TBufferFile::ReadFastArray(UShort_t *h, Int_t n)
0492    {        TBufferFile::ReadFastArray((Short_t *)h, n); }
0493 //______________________________________________________________________________
0494 inline void TBufferFile::ReadFastArray(UInt_t *i, Int_t n)
0495    {        TBufferFile::ReadFastArray((Int_t *)i, n); }
0496 //______________________________________________________________________________
0497 inline void TBufferFile::ReadFastArray(ULong_t *l, Int_t n)
0498    {        TBufferFile::ReadFastArray((Long_t *)l, n); }
0499 //______________________________________________________________________________
0500 inline void TBufferFile::ReadFastArray(ULong64_t *ll, Int_t n)
0501    {        TBufferFile::ReadFastArray((Long64_t *)ll, n); }
0502 
0503 //______________________________________________________________________________
0504 inline void TBufferFile::WriteArray(const UChar_t *c, Int_t n)
0505    {        TBufferFile::WriteArray((const Char_t *)c, n); }
0506 //______________________________________________________________________________
0507 inline void TBufferFile::WriteArray(const UShort_t *h, Int_t n)
0508    {        TBufferFile::WriteArray((const Short_t *)h, n); }
0509 //______________________________________________________________________________
0510 inline void TBufferFile::WriteArray(const UInt_t *i, Int_t n)
0511    {        TBufferFile::WriteArray((const Int_t *)i, n); }
0512 //______________________________________________________________________________
0513 inline void TBufferFile::WriteArray(const ULong64_t *ll, Int_t n)
0514    {        TBufferFile::WriteArray((const Long64_t *)ll, n); }
0515 
0516 //______________________________________________________________________________
0517 inline void TBufferFile::WriteFastArray(const UChar_t *c, Long64_t n)
0518    {        TBufferFile::WriteFastArray((const Char_t *)c, n); }
0519 //______________________________________________________________________________
0520 inline void TBufferFile::WriteFastArray(const UShort_t *h, Long64_t n)
0521    {        TBufferFile::WriteFastArray((const Short_t *)h, n); }
0522 //______________________________________________________________________________
0523 inline void TBufferFile::WriteFastArray(const UInt_t *i, Long64_t n)
0524    {        TBufferFile::WriteFastArray((const Int_t *)i, n); }
0525 //______________________________________________________________________________
0526 inline void TBufferFile::WriteFastArray(const ULong64_t *ll, Long64_t n)
0527    {        TBufferFile::WriteFastArray((const Long64_t *)ll, n); }
0528 
0529 #endif