PhoenixDataStream
2.1.0
PhoenixDataStream is a framework to save/load/serialize/deserialize data
Toggle main menu visibility
Loading...
Searching...
No Matches
data_stream_read_file.h
Go to the documentation of this file.
1
/***************************************
2
Auteur : Pierre Aubert
3
Mail : pierre.aubert@lapp.in2p3.fr
4
Licence : LGPL-3.0-only
5
****************************************/
6
7
#ifndef __DATA_STREAM_READ_FILE_H__
8
#define __DATA_STREAM_READ_FILE_H__
9
10
#include "
data_stream_include.h
"
11
13
template
<
typename
T>
14
struct
DataStream
<FILE*,
DataStreamMode::READ
, T* >{
16
20
static
bool
data_stream
(FILE* & ds, T* & data){
21
size_t
pointerAddress = 0lu;
22
bool
b =
DataStream<FILE*, DataStreamMode::READ, size_t>::data_stream
(ds, pointerAddress);
23
data = (T*)pointerAddress;
24
return
b;
25
}
26
};
27
29
template
<
typename
T>
30
struct
DataStream
<FILE*,
DataStreamMode::READ
, std::vector<T> >{
32
36
static
bool
data_stream
(FILE* & ds, std::vector<T> & data){
37
//Get the number of elements
38
size_t
nbElement(0lu);
39
bool
b =
DataStream<FILE*,DataStreamMode::READ, size_t>::data_stream
(ds, nbElement);
40
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
41
for
(
size_t
i(0lu); i < nbElement && b; ++i){
42
T tmp;
43
b &=
DataStream<FILE*,DataStreamMode::READ, T>::data_stream
(ds, tmp);
44
data.push_back(tmp);
45
}
46
return
b;
47
}
48
};
49
51
template
<
typename
T>
52
struct
DataStream
<FILE*,
DataStreamMode::READ
, std::list<T> >{
54
58
static
bool
data_stream
(FILE* & ds, std::list<T> & data){
59
//Get the number of elements
60
size_t
nbElement(0lu);
61
bool
b =
DataStream<FILE*,DataStreamMode::READ, size_t>::data_stream
(ds, nbElement);
62
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
63
for
(
size_t
i(0lu); i < nbElement && b; ++i){
64
T tmp;
65
b &=
DataStream<FILE*,DataStreamMode::READ, T>::data_stream
(ds, tmp);
66
data.push_back(tmp);
67
}
68
return
b;
69
}
70
};
71
73
template
<
typename
T,
typename
U>
74
struct
DataStream
<FILE*,
DataStreamMode::READ
, std::map<T, U> >{
76
80
static
bool
data_stream
(FILE* & ds, std::map<T, U> & data){
81
//Get the number of elements
82
size_t
nbElement(0lu);
83
bool
b =
DataStream<FILE*,DataStreamMode::READ, size_t>::data_stream
(ds, nbElement);
84
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
85
for
(
size_t
i(0lu); i < nbElement && b; ++i){
86
T tmpFirst;
87
b &=
DataStream<FILE*,DataStreamMode::READ, T>::data_stream
(ds, tmpFirst);
88
U tmpSecond;
89
b &=
DataStream<FILE*,DataStreamMode::READ, U>::data_stream
(ds, tmpSecond);
90
data[tmpFirst] = tmpSecond;
//Add data in map
91
}
92
return
b;
93
}
94
};
95
97
template
<
typename
T,
typename
U>
98
struct
DataStream
<FILE*,
DataStreamMode::READ
, std::pair<T, U> >{
100
104
static
bool
data_stream
(FILE* & ds, std::pair<T, U> & data){
105
T tmpFirst;
106
bool
b =
DataStream<FILE*,DataStreamMode::READ, T>::data_stream
(ds, tmpFirst);
107
U tmpSecond;
108
b &=
DataStream<FILE*,DataStreamMode::READ, U>::data_stream
(ds, tmpSecond);
109
data = std::pair<T, U>(tmpFirst, tmpSecond);
110
return
b;
111
}
112
};
113
114
115
116
#endif
117
118
data_stream_include.h
DataStreamMode::READ
@ READ
Definition
data_stream_include.h:21
DataStream< FILE *, DataStreamMode::READ, T * >::data_stream
static bool data_stream(FILE *&ds, T *&data)
READ a pointer address in a file.
Definition
data_stream_read_file.h:20
DataStream< FILE *, DataStreamMode::READ, std::list< T > >::data_stream
static bool data_stream(FILE *&ds, std::list< T > &data)
Get the size of a class std::list T.
Definition
data_stream_read_file.h:58
DataStream< FILE *, DataStreamMode::READ, std::map< T, U > >::data_stream
static bool data_stream(FILE *&ds, std::map< T, U > &data)
Get the size of a class std::list T.
Definition
data_stream_read_file.h:80
DataStream< FILE *, DataStreamMode::READ, std::pair< T, U > >::data_stream
static bool data_stream(FILE *&ds, std::pair< T, U > &data)
Get the size of a class std::list T.
Definition
data_stream_read_file.h:104
DataStream< FILE *, DataStreamMode::READ, std::vector< T > >::data_stream
static bool data_stream(FILE *&ds, std::vector< T > &data)
Get the size of a class std::vector T.
Definition
data_stream_read_file.h:36
DataStream
Generic DataStream class.
Definition
data_stream_include.h:32
DataStream::data_stream
static bool data_stream(Stream &ds, T &data)
Dummy function to catch if a type is not specialised.
Definition
data_stream_include.h:37
src
data_stream_read_file.h
Generated by
1.17.0