astrotypes  0.0
OStream.cpp
Go to the documentation of this file.
1 namespace pss {
2 namespace astrotypes {
3 namespace sigproc {
4 
5 template<Header::DataType HeaderDataType>
6 typename AdaptedOStream<HeaderDataType>::AdapterType AdaptedOStream<HeaderDataType>::_adapter;
7 
8 template<Header::DataType HeaderDataType>
9 template<typename Stream, typename DataType>
10 void AdaptedOStream<HeaderDataType>::write(Stream& stream, DataType& data)
11 {
12  stream << _adapter << data;
13 }
14 
15 template<typename HeaderT>
16 inline HeaderT const& OStream<HeaderT>::header() const
17 {
18  return _header;
19 }
20 
21 template<typename HeaderT>
22 template<typename Stream>
23 void OStream<HeaderT>::new_header(Stream& stream)
24 {
25  _new_header=true;
26 }
27 
28 template<typename HeaderT>
29 template<typename Stream, typename DataType>
30 void OStream<HeaderT>::write(Stream& stream, DataType& data)
31 {
32  if(_new_header) {
33  _header << data;
34  stream << _header;
35  }
36  switch(_header.data_type())
37  {
38  case HeaderT::DataType::FilterBank:
39  AdaptedOStream<HeaderT::DataType::FilterBank>::write(stream, data);
40  break;
41  case HeaderT::DataType::TimeSeries:
42  AdaptedOStream<HeaderT::DataType::TimeSeries>::write(stream, data);
43  break;
44  default:
45  throw std::runtime_error("unkonwn data type setting");
46  }
47 }
48 
49 } // namespace sigproc
50 } // namespace astrotypes
51 } // namespace pss
void write(Stream &s, DataType &)
Definition: OStream.cpp:30
void new_header(Stream &stream)
inheriting class should call this every time a new sigproc stream is opened
Definition: OStream.cpp:23