OmniSciDB  72c90bc290
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Serializer.cpp
Go to the documentation of this file.
1 /*
2  * Copyright 2022 HEAVY.AI, Inc.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
18 
19 #include <boost/archive/text_iarchive.hpp>
20 #include <boost/archive/text_oarchive.hpp>
21 
23 
24 std::string Serializer::serializeRelAlgDag(const RelAlgDag& rel_alg_dag) {
25  std::stringstream ss;
26  // save data to archive
27  {
28  boost::archive::text_oarchive oa(ss);
29  // write class instance to archive
30  oa << rel_alg_dag;
31  // archive and stream closed when destructors are called
32  }
33  return ss.str();
34 }
35 
36 std::unique_ptr<RelAlgDag> Serializer::deserializeRelAlgDag(
37  const std::string& serialized_dag_str) {
38  auto rel_alg_dag = std::make_unique<RelAlgDag>();
39  std::stringstream ss(serialized_dag_str);
40  // read data from archive
41  {
42  boost::archive::text_iarchive ia(ss);
43  ia >> *rel_alg_dag;
44  // archive and stream closed when destructors are called
45  }
46  return rel_alg_dag;
47 }
static std::string serializeRelAlgDag(const RelAlgDag &rel_alg_dag)
Definition: Serializer.cpp:24
static std::unique_ptr< RelAlgDag > deserializeRelAlgDag(const std::string &serialized_dag_str)
Definition: Serializer.cpp:36