ARTS 2.5.11 (git: 725533f0)
bifstream.cc
Go to the documentation of this file.
1
2// File description
4
13#include "bifstream.h"
14#include <fstream>
15#include <stdexcept>
16
17void bifstream::seek(long spos, Offset offs) {
18 if (!in) {
19 err = NotOpen;
20 return;
21 }
22
23 switch (offs) {
24 case Set:
25 this->seekg(spos, ios::beg);
26 break;
27 case Add:
28 this->seekg(spos, ios::cur);
29 break;
30 case End:
31 this->seekg(spos, ios::end);
32 break;
33 }
34}
35
36streampos bifstream::pos() {
37 if (!in) {
38 err = NotOpen;
39 return 0;
40 }
41 return streampos(this->tellg());
42}
43
45 if (this->good()) {
46 int iread;
47 iread = this->get();
48 if (iread == EOF) err |= Eof;
49 return (Byte)iread;
50 } else {
51 err |= NotOpen;
52 throw runtime_error("Reading from binary file failed");
53 return 0;
54 }
55}
56
57/* Overloaded input operators */
58bifstream& operator>>(bifstream& bif, double& n) {
59 n = (double)bif.readFloat(binio::Double);
60 return (bif);
61}
62
63bifstream& operator>>(bifstream& bif, float& n) {
64 n = (float)bif.readFloat(binio::Double);
65 return (bif);
66}
67
68bifstream& operator>>(bifstream& bif, std::int64_t& n) {
69 n = static_cast<std::int64_t>(bif.readInt(4));
70 return (bif);
71}
72
74 n = (int)bif.readInt(4);
75 return (bif);
76}
bifstream & operator>>(bifstream &bif, double &n)
Definition bifstream.cc:58
This file contains the class declaration of bifstream.
Binary output file stream class.
Definition bifstream.h:26
void seek(long spos, Offset offs) final
Definition bifstream.cc:17
streampos pos() final
Definition bifstream.cc:36
bifstream::Byte getByte() final
Definition bifstream.cc:44
enum { Set, Add, End } Offset
Definition binio.h:64
unsigned char Byte
Definition binio.h:82
Error err
Definition binio.h:88
Int readInt(unsigned int size)
Definition binio.cc:97
Float readFloat(FType ft)
Definition binio.cc:121