PhoenixDataStream
2.1.0
PhoenixDataStream is a framework to save/load/serialize/deserialize data
Toggle main menu visibility
Loading...
Searching...
No Matches
data_stream_write_message.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_WRITE_MESSAGE_H__
8
#define __DATA_STREAM_WRITE_MESSAGE_H__
9
10
#include "
data_stream_include.h
"
11
13
template
<
typename
T>
14
struct
DataStream
<
DataStreamIter
,
DataStreamMode
::WRITE, T* >{
16
20
static
bool
data_stream
(
DataStreamIter
& ds, T* & data){
21
size_t
value = (size_t)data;
22
bool
b =
DataStream<DataStreamIter, DataStreamMode::WRITE, size_t>::data_stream
(ds, value);
23
return
b;
24
}
25
};
26
28
template
<
typename
T>
29
struct
DataStream
<
DataStreamIter
,
DataStreamMode
::WRITE, std::vector<T> >{
31
35
static
bool
data_stream
(
DataStreamIter
& ds, std::vector<T> & data){
36
//Save the size of the data
37
size_t
nbElement(data.size());
38
bool
b =
DataStream<DataStreamIter, DataStreamMode::WRITE, size_t>::data_stream
(ds, nbElement);
39
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
40
for
(
typename
std::vector<T>::iterator it(data.begin()); it != data.end(); ++it){
41
b &=
DataStream<DataStreamIter, DataStreamMode::WRITE, T>::data_stream
(ds, *it);
42
}
43
return
b;
44
}
45
};
46
48
template
<
typename
T>
49
struct
DataStream
<
DataStreamIter
,
DataStreamMode
::WRITE, std::list<T> >{
51
55
static
bool
data_stream
(
DataStreamIter
& ds, std::list<T> & data){
56
//Save the size of the data
57
size_t
nbElement(data.size());
58
bool
b =
DataStream<DataStreamIter, DataStreamMode::WRITE, size_t>::data_stream
(ds, nbElement);
59
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
60
for
(
typename
std::list<T>::iterator it(data.begin()); it != data.end(); ++it){
61
b &=
DataStream<DataStreamIter, DataStreamMode::WRITE, T>::data_stream
(ds, *it);
62
}
63
return
b;
64
}
65
};
66
68
template
<
typename
T,
typename
U>
69
struct
DataStream
<
DataStreamIter
,
DataStreamMode
::WRITE, std::map<T, U> >{
71
75
static
bool
data_stream
(
DataStreamIter
& ds, std::map<T, U> & data){
76
//Save the size of the data
77
size_t
nbElement(data.size());
78
bool
b =
DataStream<DataStreamIter, DataStreamMode::WRITE, size_t>::data_stream
(ds, nbElement);
79
if
(nbElement == 0lu || !b){
return
b;}
//If there is no element, quit now
80
for
(
typename
std::map<T, U>::iterator it(data.begin()); it != data.end(); ++it){
81
b &=
DataStream<DataStreamIter, DataStreamMode::WRITE, T>::data_stream
(ds, (T&)it->first);
82
b &=
DataStream<DataStreamIter, DataStreamMode::WRITE, U>::data_stream
(ds, it->second);
83
}
84
return
b;
85
}
86
};
87
89
template
<
typename
T,
typename
U>
90
struct
DataStream
<
DataStreamIter
,
DataStreamMode
::WRITE, std::pair<T, U> >{
92
96
static
bool
data_stream
(
DataStreamIter
& ds, std::pair<T, U> & data){
97
bool
b =
DataStream<DataStreamIter, DataStreamMode::WRITE, T>::data_stream
(ds, (T&)data.first);
98
b &=
DataStream<DataStreamIter, DataStreamMode::WRITE, U>::data_stream
(ds, data.second);
99
return
b;
100
}
101
};
102
103
104
105
#endif
106
107
data_stream_include.h
DataStreamIter
DataStreamType * DataStreamIter
Definition
data_stream_include.h:28
DataStreamMode
Definition
data_stream_include.h:18
DataStream< DataStreamIter, DataStreamMode::WRITE, T * >::data_stream
static bool data_stream(DataStreamIter &ds, T *&data)
Write a pointer address in a message.
Definition
data_stream_write_message.h:20
DataStream< DataStreamIter, DataStreamMode::WRITE, std::list< T > >::data_stream
static bool data_stream(DataStreamIter &ds, std::list< T > &data)
Get the size of a class std::list T.
Definition
data_stream_write_message.h:55
DataStream< DataStreamIter, DataStreamMode::WRITE, std::map< T, U > >::data_stream
static bool data_stream(DataStreamIter &ds, std::map< T, U > &data)
Get the size of a class std::list T.
Definition
data_stream_write_message.h:75
DataStream< DataStreamIter, DataStreamMode::WRITE, std::pair< T, U > >::data_stream
static bool data_stream(DataStreamIter &ds, std::pair< T, U > &data)
Get the size of a class std::list T.
Definition
data_stream_write_message.h:96
DataStream< DataStreamIter, DataStreamMode::WRITE, std::vector< T > >::data_stream
static bool data_stream(DataStreamIter &ds, std::vector< T > &data)
Get the size of a class std::vector T.
Definition
data_stream_write_message.h:35
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_write_message.h
Generated by
1.17.0