OOFEM 3.0
Loading...
Searching...
No Matches
datastream.h
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
35#ifndef datastream_h
36#define datastream_h
37
38#include "oofemenv.h"
39
40#include <sstream>
41#include <cstdio>
42#include <exception>
43#include <stdexcept>
44
45namespace oofem {
55{
56public:
58 virtual ~DataStream() { }
66
67 virtual int read(int *data, std::size_t count) = 0;
68 int read(int &data) { return this->read(&data, 1); }
70 virtual int read(unsigned long *data, std::size_t count) = 0;
71 int read(unsigned long &data) { return this->read(&data, 1); }
72#ifdef _WIN32
74 virtual int read(std::size_t* data, std::size_t count) = 0;
75 int read(std::size_t& data) { return this->read(&data, 1); }
76#endif
78 virtual int read(long *data, std::size_t count) = 0;
79 int read(long &data) { return this->read(&data, 1); }
81 virtual int read(double *data, std::size_t count) = 0;
82 int read(double &data) { return this->read(&data, 1); }
84 virtual int read(char *data, std::size_t count) = 0;
85 int read(char &data) { return this->read(&data, 1); }
87 virtual int read(bool &data) = 0;
89 int read(std :: string &data);
91
98
99 virtual int write(const int *data, std::size_t count) = 0;
100 int write(int data) { return this->write(&data, 1); }
102 virtual int write(const unsigned long *data, std::size_t count) = 0;
103 int write(unsigned long data) { return this->write(&data, 1); }
104#ifdef _WIN32
106 virtual int write(const std::size_t* data, std::size_t count) = 0;
107 int write(std::size_t data) { return this->write(&data, 1); }
108#endif
110 virtual int write(const long *data, std::size_t count) = 0;
111 int write(long data) { return this->write(&data, 1); }
113 virtual int write(const double *data, std::size_t count) = 0;
114 int write(double data) { return this->write(&data, 1); }
116 virtual int write(const char *data, std::size_t count) = 0;
117 int write(char data) { return this->write(&data, 1); }
119 virtual int write(bool data) = 0;
121 int write(const std :: string &data);
123 int write(const char *data) { return this->write(std :: string(data)); }
125
131 virtual int givePackSizeOfInt(std::size_t count) = 0;
132 virtual int givePackSizeOfDouble(std::size_t count) = 0;
133 virtual int givePackSizeOfChar(std::size_t count) = 0;
134 virtual int givePackSizeOfBool(std::size_t count) = 0;
135 virtual int givePackSizeOfLong(std::size_t count) = 0;
136 virtual int givePackSizeOfSizet(std::size_t count) = 0;
138};
139
140
148{
149public:
150 class CantOpen : public std::runtime_error
151 {
152 public:
153 std::string filename;
154 CantOpen(std::string file): std::runtime_error("can't open file"), filename(std::move(file)) {}
155 };
156
157private:
159 FILE *stream;
161 std :: string filename;
162public:
164 FileDataStream(std :: string filename, bool write);
165
167 virtual ~FileDataStream();
168
169 int read(int *data, std::size_t count) override;
170 int read(unsigned long *data, std::size_t count) override;
171#ifdef _WIN32
172 int read(std::size_t *data, std::size_t count) override;
173#endif
174 int read(long *data, std::size_t count) override;
175 int read(double *data, std::size_t count) override;
176 int read(char *data, std::size_t count) override;
177 int read(bool &data) override;
178
179 int write(const int *data, std::size_t count) override;
180 int write(const unsigned long *data, std::size_t count) override;
181#ifdef _WIN32
182 int write(const std::size_t* data, std::size_t count) override;
183#endif
184 int write(const long *data, std::size_t count) override;
185 int write(const double *data, std::size_t count) override;
186 int write(const char *data, std::size_t count) override;
187 int write(bool data) override;
188
189 int givePackSizeOfInt(std::size_t count) override;
190 int givePackSizeOfDouble(std::size_t count) override;
191 int givePackSizeOfChar(std::size_t count) override;
192 int givePackSizeOfBool(std::size_t count) override;
193 int givePackSizeOfLong(std::size_t count) override;
194 int givePackSizeOfSizet(std::size_t count) override;
195
196};
197
198} // end namespace oofem
199#endif // datastream_h
int write(char data)
Definition datastream.h:117
virtual int write(const char *data, std::size_t count)=0
Writes count char values from array pointed by data.
virtual int givePackSizeOfLong(std::size_t count)=0
int write(double data)
Definition datastream.h:114
int read(double &data)
Definition datastream.h:82
int read(int &data)
Definition datastream.h:68
virtual int read(bool &data)=0
Reads a bool value from data.
int read(long &data)
Definition datastream.h:79
virtual int read(int *data, std::size_t count)=0
Reads count integer values into array pointed by data.
int write(const char *data)
Writes a string (wrapper needed, otherwise write(bool) is called ).
Definition datastream.h:123
virtual int givePackSizeOfDouble(std::size_t count)=0
virtual int write(const long *data, std::size_t count)=0
Writes count long values from array pointed by data.
int write(unsigned long data)
Definition datastream.h:103
virtual int givePackSizeOfSizet(std::size_t count)=0
virtual int read(long *data, std::size_t count)=0
Reads count long values into array pointed by data.
int write(long data)
Definition datastream.h:111
virtual int write(bool data)=0
Writes a bool value.
virtual int read(double *data, std::size_t count)=0
Reads count double values into array pointed by data.
virtual int write(const int *data, std::size_t count)=0
Writes count integer values from array pointed by data.
virtual int givePackSizeOfBool(std::size_t count)=0
virtual int read(char *data, std::size_t count)=0
Reads count char values into array pointed by data.
virtual ~DataStream()
Destructor.
Definition datastream.h:58
int write(int data)
Definition datastream.h:100
virtual int givePackSizeOfChar(std::size_t count)=0
virtual int givePackSizeOfInt(std::size_t count)=0
int read(char &data)
Definition datastream.h:85
virtual int read(unsigned long *data, std::size_t count)=0
Reads count unsigned long values into array pointed by data.
int read(unsigned long &data)
Definition datastream.h:71
virtual int write(const double *data, std::size_t count)=0
Writes count double values from array pointed by data.
virtual int write(const unsigned long *data, std::size_t count)=0
Writes count unsigned long values from array pointed by data.
int givePackSizeOfDouble(std::size_t count) override
Definition datastream.C:162
int givePackSizeOfInt(std::size_t count) override
Definition datastream.C:157
int givePackSizeOfSizet(std::size_t count) override
Definition datastream.C:182
std::string filename
Filename.
Definition datastream.h:161
FILE * stream
FILE pointer of associated stream.
Definition datastream.h:159
FileDataStream(std ::string filename, bool write)
Constructor, takes associated stream pointer as parameter.
Definition datastream.C:65
int givePackSizeOfChar(std::size_t count) override
Definition datastream.C:167
int givePackSizeOfBool(std::size_t count) override
Definition datastream.C:172
int read(int *data, std::size_t count) override
Reads count integer values into array pointed by data.
Definition datastream.C:81
int write(const int *data, std::size_t count) override
Writes count integer values from array pointed by data.
Definition datastream.C:120
int givePackSizeOfLong(std::size_t count) override
Definition datastream.C:177
#define OOFEM_EXPORT
Definition oofemcfg.h:7

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011