Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
RRawFileWin.hxx
Go to the documentation of this file.
1 // @(#)root/io:$Id$
2 // Author: Jakob Blomer
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2018, 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_RRawFileWin
13 #define ROOT_RRawFileWin
14 
15 #include <ROOT/RRawFile.hxx>
16 #include <ROOT/RStringView.hxx>
17 
18 #include <cstddef>
19 #include <cstdint>
20 #include <cstdio>
21 
22 namespace ROOT {
23 namespace Internal {
24 
25 /**
26  * \class RRawFileWin RRawFileWin.hxx
27  * \ingroup IO
28  *
29  * The RRawFileWin class uses portable C I/O calls to read from a drive. The standard C I/O buffering is turned off
30  * for the buffering of RRawFile base class.
31  */
32 class RRawFileWin : public RRawFile {
33 private:
34  FILE *fFilePtr;
35  void Seek(long offset, int whence);
36 
37 protected:
38  void OpenImpl() final;
39  size_t ReadAtImpl(void *buffer, size_t nbytes, std::uint64_t offset) final;
40  std::uint64_t GetSizeImpl() final;
41 
42 public:
43  RRawFileWin(std::string_view url, RRawFile::ROptions options);
44  ~RRawFileWin();
45  std::unique_ptr<RRawFile> Clone() const final;
46  int GetFeatures() const final { return kFeatureHasSize; }
47 };
48 
49 } // namespace Internal
50 } // namespace ROOT
51 
52 #endif