dune-pdelab  2.0.0
polymorphicbufferwrapper.hh
Go to the documentation of this file.
1 // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
2 // vi: set et ts=4 sw=2 sts=2:
3 #ifndef DUNE_PDELAB_COMMON_POLYMORPHICBUFFERWRAPPER_HH
4 #define DUNE_PDELAB_COMMON_POLYMORPHICBUFFERWRAPPER_HH
5 
6 namespace Dune {
7  namespace PDELab {
8 
10 
23  template<typename Buffer>
25  {
26 
27  public:
28 
29  template<typename T>
30  void write(const T& data)
31  {
32  const char* raw_data = reinterpret_cast<const char*>(&data);
33  for (std::size_t i = 0; i < sizeof(T); ++i)
34  _buffer.write(*(raw_data++));
35  }
36 
37  template<typename T>
38  void read(T& data)
39  {
40  char* raw_data = reinterpret_cast<char*>(&data);
41  for (std::size_t i = 0; i < sizeof(T); ++i)
42  _buffer.read(*(raw_data++));
43  }
44 
45  PolymorphicBufferWrapper(Buffer& buffer)
46  : _buffer(buffer)
47  {}
48 
49  private:
50 
51  Buffer& _buffer;
52 
53  };
54 
55  } // namespace PDELab
56 } // namespace Dune
57 
58 #endif // DUNE_PDELAB_COMMON_POLYMORPHICBUFFERWRAPPER_HH
void read(T &data)
Definition: polymorphicbufferwrapper.hh:38
Wrapper for message buffers of grid DataHandles that allows for sending different types of data...
Definition: polymorphicbufferwrapper.hh:24
void write(const T &data)
Definition: polymorphicbufferwrapper.hh:30
PolymorphicBufferWrapper(Buffer &buffer)
Definition: polymorphicbufferwrapper.hh:45