Developer Documentation
Loading...
Searching...
No Matches
Serializers.cc
1/*===========================================================================*\
2 * *
3 * OpenVolumeMesh *
4 * Copyright (C) 2011 by Computer Graphics Group, RWTH Aachen *
5 * www.openvolumemesh.org *
6 * *
7 *---------------------------------------------------------------------------*
8 * This file is part of OpenVolumeMesh. *
9 * *
10 * OpenVolumeMesh is free software: you can redistribute it and/or modify *
11 * it under the terms of the GNU Lesser General Public License as *
12 * published by the Free Software Foundation, either version 3 of *
13 * the License, or (at your option) any later version with the *
14 * following exceptions: *
15 * *
16 * If other files instantiate templates or use macros *
17 * or inline functions from this file, or you compile this file and *
18 * link it with other files to produce an executable, this file does *
19 * not by itself cause the resulting executable to be covered by the *
20 * GNU Lesser General Public License. This exception does not however *
21 * invalidate any other reasons why the executable file might be *
22 * covered by the GNU Lesser General Public License. *
23 * *
24 * OpenVolumeMesh is distributed in the hope that it will be useful, *
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
27 * GNU Lesser General Public License for more details. *
28 * *
29 * You should have received a copy of the GNU LesserGeneral Public *
30 * License along with OpenVolumeMesh. If not, *
31 * see <http://www.gnu.org/licenses/>. *
32 * *
33\*===========================================================================*/
34
35
36
37
38#include <OpenVolumeMesh/FileManager/Serializers.hh>
39
40namespace OpenVolumeMesh
41{
42
43std::ostream& serialize(std::ostream& _ostr, const std::string& _rhs)
44{
45 _ostr << _rhs.size() << ":";
46 _ostr << _rhs;
47
48 return _ostr;
49}
50
51std::istream& deserialize(std::istream& _istr, std::string& _rhs)
52{
53 size_t len;
54 char delimiter;
55 _istr >> len; //deserialize size of string
56 _istr >> delimiter;
57 if (_istr && len) {
58 std::vector<char> tmp(len);
59 _istr.read(&tmp[0] , len); //deserialize characters of string
60 _rhs.assign(&tmp[0], len);
61 }
62
63 return _istr;
64}
65
66
67std::istream& operator>>(std::istream& _istr, std::vector< bool >& _rhs)
68{
69 size_t size;
70 _istr >> size;
71 _rhs.resize(size);
72 for (size_t i=0; i<size; i++)
73 {
74 bool b;
75 _istr >> b;
76 _rhs[i] = b;
77 }
78
79 return _istr;
80}
81
82}
std::istream & operator>>(std::istream &is, Matrix4x4T< Scalar > &m)
read the space-separated components of a vector from a stream *‍/