Main MRPT website > C++ reference for MRPT 1.9.9
archiveFrom_std_streams.h
Go to the documentation of this file.
1 /* +------------------------------------------------------------------------+
2  | Mobile Robot Programming Toolkit (MRPT) |
3  | http://www.mrpt.org/ |
4  | |
5  | Copyright (c) 2005-2018, Individual contributors, see AUTHORS file |
6  | See: http://www.mrpt.org/Authors - All rights reserved. |
7  | Released under BSD License. See details in http://www.mrpt.org/License |
8  +------------------------------------------------------------------------+ */
9 #pragma once
10 
12 #include <iosfwd>
13 #include <istream>
14 #include <ostream>
15 
16 namespace mrpt
17 {
18 namespace serialization
19 {
20 /** Specialization for std::istream */
21 template <>
22 class CArchiveStreamBase<std::istream> : public CArchive
23 {
24  std::istream& m_s;
25 
26  public:
27  CArchiveStreamBase(std::istream& s) : m_s(s) {}
28  protected:
29  size_t write(const void* d, size_t n) override
30  {
31  throw std::runtime_error(
32  "CArchiveStreamBase<std::istream>:"
33  "cannot write to an input stream.");
34  }
35  size_t read(void* d, size_t n) override
36  {
37  if (m_s.read(reinterpret_cast<char*>(d), n))
38  return n;
39  else
40  return 0;
41  }
42 };
43 
44 /** Specialization for std::ostream */
45 template <>
46 class CArchiveStreamBase<std::ostream> : public CArchive
47 {
48  std::ostream& m_s;
49 
50  public:
51  CArchiveStreamBase(std::ostream& s) : m_s(s) {}
52  protected:
53  size_t write(const void* d, size_t n) override
54  {
55  if (m_s.write(reinterpret_cast<const char*>(d), n))
56  return n;
57  else
58  return 0;
59  }
60  size_t read(void* d, size_t n) override
61  {
62  throw std::runtime_error(
63  "CArchiveStreamBase<std::ostream>:"
64  "cannot read from output stream.");
65  }
66 };
67 
68 /** Specialization for std::iostream */
69 template <>
70 class CArchiveStreamBase<std::iostream> : public CArchive
71 {
72  std::iostream& m_s;
73 
74  public:
75  CArchiveStreamBase(std::iostream& s) : m_s(s) {}
76  protected:
77  size_t write(const void* d, size_t n) override
78  {
79  if (m_s.write(reinterpret_cast<const char*>(d), n))
80  return n;
81  else
82  return 0;
83  }
84  size_t read(void* d, size_t n) override
85  {
86  if (m_s.read(reinterpret_cast<char*>(d), n))
87  return n;
88  else
89  return 0;
90  }
91 };
92 
93 } // namespace serialization
94 } // namespace mrpt
n
GLenum GLsizei n
Definition: glext.h:5074
mrpt::serialization::CArchiveStreamBase< std::ostream >::CArchiveStreamBase
CArchiveStreamBase(std::ostream &s)
Definition: archiveFrom_std_streams.h:51
mrpt::serialization::CArchiveStreamBase
CArchive for mrpt::io::CStream classes (use as template argument).
Definition: CArchive.h:546
mrpt::serialization::CArchiveStreamBase< std::ostream >::write
size_t write(const void *d, size_t n) override
Writes a block of bytes.
Definition: archiveFrom_std_streams.h:53
mrpt::serialization::CArchiveStreamBase< std::iostream >::read
size_t read(void *d, size_t n) override
Reads a block of bytes.
Definition: archiveFrom_std_streams.h:84
s
GLdouble s
Definition: glext.h:3676
mrpt::serialization::CArchiveStreamBase< std::istream >::m_s
std::istream & m_s
Definition: archiveFrom_std_streams.h:24
mrpt::serialization::CArchiveStreamBase< std::istream >::write
size_t write(const void *d, size_t n) override
Writes a block of bytes.
Definition: archiveFrom_std_streams.h:29
mrpt
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries.
Definition: CKalmanFilterCapable.h:30
mrpt::serialization::CArchiveStreamBase< std::istream >::read
size_t read(void *d, size_t n) override
Reads a block of bytes.
Definition: archiveFrom_std_streams.h:35
mrpt::serialization::CArchiveStreamBase::m_s
STREAM & m_s
Definition: CArchive.h:548
mrpt::serialization::CArchiveStreamBase< std::ostream >::m_s
std::ostream & m_s
Definition: archiveFrom_std_streams.h:48
mrpt::serialization::CArchive
Virtual base class for "archives": classes abstracting I/O streams.
Definition: CArchive.h:48
mrpt::serialization::CArchiveStreamBase< std::istream >::CArchiveStreamBase
CArchiveStreamBase(std::istream &s)
Definition: archiveFrom_std_streams.h:27
mrpt::serialization::CArchiveStreamBase< std::iostream >::m_s
std::iostream & m_s
Definition: archiveFrom_std_streams.h:72
mrpt::serialization::CArchiveStreamBase< std::ostream >::read
size_t read(void *d, size_t n) override
Reads a block of bytes.
Definition: archiveFrom_std_streams.h:60
mrpt::serialization::CArchiveStreamBase< std::iostream >::CArchiveStreamBase
CArchiveStreamBase(std::iostream &s)
Definition: archiveFrom_std_streams.h:75
CArchive.h
mrpt::serialization::CArchiveStreamBase< std::iostream >::write
size_t write(const void *d, size_t n) override
Writes a block of bytes.
Definition: archiveFrom_std_streams.h:77



Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST