dune-pdelab  2.5-dev
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 #include <cstddef>
7 
8 namespace Dune {
9  namespace PDELab {
10 
12 
25  template<typename Buffer>
27  {
28 
29  public:
30 
31  template<typename T>
32  void write(const T& data)
33  {
34  const char* raw_data = reinterpret_cast<const char*>(&data);
35  for (std::size_t i = 0; i < sizeof(T); ++i)
36  _buffer.write(*(raw_data++));
37  }
38 
39  template<typename T>
40  void read(T& data)
41  {
42  char* raw_data = reinterpret_cast<char*>(&data);
43  for (std::size_t i = 0; i < sizeof(T); ++i)
44  _buffer.read(*(raw_data++));
45  }
46 
47  PolymorphicBufferWrapper(Buffer& buffer)
48  : _buffer(buffer)
49  {}
50 
51  private:
52 
53  Buffer& _buffer;
54 
55  };
56 
57  } // namespace PDELab
58 } // namespace Dune
59 
60 #endif // DUNE_PDELAB_COMMON_POLYMORPHICBUFFERWRAPPER_HH
For backward compatibility – Do not use this!
Definition: adaptivity.hh:27
Wrapper for message buffers of grid DataHandles that allows for sending different types of data...
Definition: polymorphicbufferwrapper.hh:26
void read(T &data)
Definition: polymorphicbufferwrapper.hh:40
PolymorphicBufferWrapper(Buffer &buffer)
Definition: polymorphicbufferwrapper.hh:47
void write(const T &data)
Definition: polymorphicbufferwrapper.hh:32