| // Copyright 2015 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_ |
| #define CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_ |
| |
| #include <stdio.h> |
| |
| #include "chromiumos-wide-profiling/data_reader.h" |
| |
| namespace quipper { |
| |
| // Read from an input file. Must be a normal file. Does not support pipe inputs. |
| class FileReader : public DataReader { |
| public: |
| explicit FileReader(const string& filename); |
| virtual ~FileReader(); |
| |
| bool IsOpen() const { |
| return infile_; |
| } |
| |
| void SeekSet(size_t offset) override { |
| fseek(infile_, offset, SEEK_SET); |
| } |
| |
| size_t Tell() const override { |
| return ftell(infile_); |
| } |
| |
| bool ReadData(const size_t size, void* dest) override; |
| |
| // If there is a failure reading the data from file, |*str| will not be |
| // modified. |
| bool ReadString(const size_t size, string* str) override; |
| |
| private: |
| // File input handle. |
| FILE* infile_; |
| }; |
| |
| } // namespace quipper |
| |
| #endif // CHROMIUMOS_WIDE_PROFILING_FILE_READER_H_ |