Home | History | Annotate | Download | only in quipper
      1 // Copyright 2015 The Chromium OS Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_
      6 #define CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_
      7 
      8 #include <stdio.h>
      9 
     10 #include "data_reader.h"
     11 
     12 namespace quipper {
     13 
     14 // Read from an input file. Must be a normal file. Does not support pipe inputs.
     15 class FileReader : public DataReader {
     16  public:
     17   explicit FileReader(const string& filename);
     18   virtual ~FileReader();
     19 
     20   bool IsOpen() const { return infile_; }
     21 
     22   void SeekSet(size_t offset) override { fseek(infile_, offset, SEEK_SET); }
     23 
     24   size_t Tell() const override { return ftell(infile_); }
     25 
     26   bool ReadData(const size_t size, void* dest) override;
     27 
     28   // If there is a failure reading the data from file, |*str| will not be
     29   // modified.
     30   bool ReadString(const size_t size, string* str) override;
     31 
     32  private:
     33   // File input handle.
     34   FILE* infile_;
     35 };
     36 
     37 }  // namespace quipper
     38 
     39 #endif  // CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_
     40