DP3
BlobSTL.h
Go to the documentation of this file.
1 // BlobSTL.h: Blob handling for STL sequences
2 //
3 // Copyright (C) 2020 ASTRON (Netherlands Institute for Radio Astronomy)
4 // SPDX-License-Identifier: GPL-3.0-or-later
5 
6 #ifndef LOFAR_BLOB_BLOBSTL_H
7 #define LOFAR_BLOB_BLOBSTL_H
8 
9 #include "BlobOStream.h"
10 #include "BlobIStream.h"
11 
12 #include <map>
13 #include <list>
14 #include <set>
15 #include <queue>
16 #include <deque>
17 
18 namespace dp3 {
19 namespace blob {
20 
23 
25 
33 template <typename T, typename U>
34 BlobOStream& operator<<(BlobOStream&, const std::map<T, U>&);
35 
37 template <typename T, typename U>
38 BlobIStream& operator>>(BlobIStream&, std::map<T, U>&);
40 
51 template <typename Seq>
52 void sequenceToBlob(BlobOStream&, const Seq&);
53 
55 template <typename Seq>
58 template <typename T>
59 void sequenceFromBlob(BlobOStream&, std::set<T>&);
61 
74 template <typename T>
75 BlobOStream& operator<<(BlobOStream& bs, const std::list<T>& seq) {
76  sequenceToBlob(bs, seq);
77  return bs;
78 }
79 
81 template <typename T>
82 BlobIStream& operator>>(BlobIStream& bs, std::list<T>& seq) {
83  sequenceFromBlob(bs, seq);
84  return bs;
85 }
86 
88 template <typename T>
89 BlobOStream& operator<<(BlobOStream& bs, const std::set<T>& seq) {
90  sequenceToBlob(bs, seq);
91  return bs;
92 }
93 
95 template <typename T>
96 BlobIStream& operator>>(BlobIStream& bs, std::set<T>& seq) {
97  sequenceFromBlob(bs, seq);
98  return bs;
99 }
100 
102 template <typename T>
103 BlobOStream& operator<<(BlobOStream& bs, const std::queue<T>& seq) {
104  sequenceToBlob(bs, seq);
105  return bs;
106 }
107 
109 template <typename T>
110 BlobIStream& operator>>(BlobIStream& bs, std::queue<T>& seq) {
111  sequenceFromBlob(bs, seq);
112  return bs;
113 }
114 
116 template <typename T>
117 BlobOStream& operator<<(BlobOStream& bs, const std::deque<T>& seq) {
118  sequenceToBlob(bs, seq);
119  return bs;
120 }
121 
123 template <typename T>
124 BlobIStream& operator>>(BlobIStream& bs, std::deque<T>& seq) {
125  sequenceFromBlob(bs, seq);
126  return bs;
127 }
129 
131 
132 } // namespace blob
133 } // namespace dp3
134 
135 #include "BlobSTL.tcc"
136 
137 using dp3::blob::operator<<;
138 using dp3::blob::operator>>;
139 
140 #endif
Input stream for a blob.
Definition: BlobIStream.h:43
Output stream for a blob.
Definition: BlobOStream.h:40
BlobOStream & operator<<(BlobOStream &, const std::vector< bool > &)
BlobIStream & operator>>(BlobIStream &, std::vector< bool > &)
void sequenceToBlob(BlobOStream &, const Seq &)
void sequenceFromBlob(BlobOStream &, Seq &)
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53