xref: /netbsd-src/external/gpl3/binutils/dist/gprofng/src/DataStream.h (revision cb63e24e8d6aae7ddac1859a9015f48b1d8bd90e)
1 /* Copyright (C) 2021-2024 Free Software Foundation, Inc.
2    Contributed by Oracle.
3 
4    This file is part of GNU Binutils.
5 
6    This program is free software; you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation; either version 3, or (at your option)
9    any later version.
10 
11    This program is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with this program; if not, write to the Free Software
18    Foundation, 51 Franklin Street - Fifth Floor, Boston,
19    MA 02110-1301, USA.  */
20 
21 #ifndef _DATASTREAM_H
22 #define _DATASTREAM_H
23 
24 #include "Data_window.h"
25 
26 // sequential access to the file
27 class DataStream : public Data_window
28 {
29 public:
30   // Create an empty data window.
31   DataStream (char *file_name);
32   ~DataStream ();
33   void set_span (int64_t f_offset, int64_t sz);
34   int64_t read (void *buf, int64_t len);
35 
36   template <typename Key_t> inline int64_t
read(Key_t & val)37   read (Key_t &val)
38   {
39     int64_t sz = read (&val, sizeof (val));
40     if (need_swap_endian && sz == sizeof (val))
41       swapByteOrder (&val, sizeof (val));
42     return sz;
43   }
44 
45 private:
46   int64_t span_offset;
47   int64_t span_size;        // the window size
48   int64_t span_fileoffset;  // the window begin on the file
49 };
50 
51 #endif /* _DATASTREAM_H */
52