From 86b6f32ce68fc85c30bd2e9c122fb60178aac427 Mon Sep 17 00:00:00 2001 From: Teon Banek <teon.banek@memgraph.io> Date: Thu, 21 Dec 2017 11:08:00 +0100 Subject: [PATCH] Move load_construct_data from ast.cpp to ast.hpp Reviewers: florijan, mislav.bradac, mferencevic Reviewed By: florijan Subscribers: pullbot Differential Revision: https://phabricator.memgraph.io/D1078 --- src/query/frontend/ast/ast.cpp | 70 --------------------------------- src/query/frontend/ast/ast.hpp | 71 ++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 70 deletions(-) diff --git a/src/query/frontend/ast/ast.cpp b/src/query/frontend/ast/ast.cpp index 11ac537ec..f0bd5fd62 100644 --- a/src/query/frontend/ast/ast.cpp +++ b/src/query/frontend/ast/ast.cpp @@ -35,76 +35,6 @@ ReturnBody CloneReturnBody(AstTreeStorage &storage, const ReturnBody &body) { } // namespace query -#define LOAD_AND_CONSTRUCT(DerivedClass, ...) \ - template <class TArchive> \ - void load_construct_data(TArchive &ar, DerivedClass *cls, \ - const unsigned int) { \ - ::new (cls) DerivedClass(__VA_ARGS__); \ - } - -// All of the serialization cruft follows - -namespace boost::serialization { -LOAD_AND_CONSTRUCT(query::Where, 0); -LOAD_AND_CONSTRUCT(query::OrOperator, 0); -LOAD_AND_CONSTRUCT(query::XorOperator, 0); -LOAD_AND_CONSTRUCT(query::AndOperator, 0); -LOAD_AND_CONSTRUCT(query::AdditionOperator, 0); -LOAD_AND_CONSTRUCT(query::SubtractionOperator, 0); -LOAD_AND_CONSTRUCT(query::MultiplicationOperator, 0); -LOAD_AND_CONSTRUCT(query::DivisionOperator, 0); -LOAD_AND_CONSTRUCT(query::ModOperator, 0); -LOAD_AND_CONSTRUCT(query::NotEqualOperator, 0); -LOAD_AND_CONSTRUCT(query::EqualOperator, 0); -LOAD_AND_CONSTRUCT(query::LessOperator, 0); -LOAD_AND_CONSTRUCT(query::GreaterOperator, 0); -LOAD_AND_CONSTRUCT(query::LessEqualOperator, 0); -LOAD_AND_CONSTRUCT(query::GreaterEqualOperator, 0); -LOAD_AND_CONSTRUCT(query::InListOperator, 0); -LOAD_AND_CONSTRUCT(query::ListMapIndexingOperator, 0); -LOAD_AND_CONSTRUCT(query::ListSlicingOperator, 0, nullptr, nullptr, nullptr); -LOAD_AND_CONSTRUCT(query::IfOperator, 0, nullptr, nullptr, nullptr); -LOAD_AND_CONSTRUCT(query::NotOperator, 0); -LOAD_AND_CONSTRUCT(query::UnaryPlusOperator, 0); -LOAD_AND_CONSTRUCT(query::UnaryMinusOperator, 0); -LOAD_AND_CONSTRUCT(query::IsNullOperator, 0); -LOAD_AND_CONSTRUCT(query::PrimitiveLiteral, 0); -LOAD_AND_CONSTRUCT(query::ListLiteral, 0); -LOAD_AND_CONSTRUCT(query::MapLiteral, 0); -LOAD_AND_CONSTRUCT(query::Identifier, 0, ""); -LOAD_AND_CONSTRUCT(query::PropertyLookup, 0, nullptr, "", - GraphDbTypes::Property()); -LOAD_AND_CONSTRUCT(query::LabelsTest, 0, nullptr, - std::vector<GraphDbTypes::Label>()); -LOAD_AND_CONSTRUCT(query::Function, 0); -LOAD_AND_CONSTRUCT(query::Aggregation, 0, nullptr, nullptr, - query::Aggregation::Op::COUNT); -LOAD_AND_CONSTRUCT(query::All, 0, nullptr, nullptr, nullptr); -LOAD_AND_CONSTRUCT(query::ParameterLookup, 0); -LOAD_AND_CONSTRUCT(query::NamedExpression, 0); -LOAD_AND_CONSTRUCT(query::NodeAtom, 0); -LOAD_AND_CONSTRUCT(query::EdgeAtom, 0); -LOAD_AND_CONSTRUCT(query::Pattern, 0); -LOAD_AND_CONSTRUCT(query::SingleQuery, 0); -LOAD_AND_CONSTRUCT(query::CypherUnion, 0); -LOAD_AND_CONSTRUCT(query::Query, 0); -LOAD_AND_CONSTRUCT(query::Create, 0); -LOAD_AND_CONSTRUCT(query::Match, 0); -LOAD_AND_CONSTRUCT(query::Return, 0); -LOAD_AND_CONSTRUCT(query::With, 0); -LOAD_AND_CONSTRUCT(query::Delete, 0); -LOAD_AND_CONSTRUCT(query::SetProperty, 0); -LOAD_AND_CONSTRUCT(query::SetProperties, 0); -LOAD_AND_CONSTRUCT(query::SetLabels, 0); -LOAD_AND_CONSTRUCT(query::RemoveProperty, 0); -LOAD_AND_CONSTRUCT(query::RemoveLabels, 0); -LOAD_AND_CONSTRUCT(query::Merge, 0); -LOAD_AND_CONSTRUCT(query::Unwind, 0); -LOAD_AND_CONSTRUCT(query::CreateIndex, 0); -} // namespace boost::serialization - -#undef LOAD_AND_CONSTRUCT - // Include archives before registering most derived types. #include "boost/archive/binary_iarchive.hpp" #include "boost/archive/binary_oarchive.hpp" diff --git a/src/query/frontend/ast/ast.hpp b/src/query/frontend/ast/ast.hpp index 850e19bae..e26d1a9c5 100644 --- a/src/query/frontend/ast/ast.hpp +++ b/src/query/frontend/ast/ast.hpp @@ -2906,6 +2906,8 @@ class CreateIndex : public Clause { #undef SERIALIZE_USING_BASE } // namespace query +// All of the serialization cruft follows + BOOST_CLASS_EXPORT_KEY(query::Query); BOOST_CLASS_EXPORT_KEY(query::SingleQuery); BOOST_CLASS_EXPORT_KEY(query::CypherUnion); @@ -2959,3 +2961,72 @@ BOOST_CLASS_EXPORT_KEY(query::Unwind); BOOST_CLASS_EXPORT_KEY(query::Identifier); BOOST_CLASS_EXPORT_KEY(query::PrimitiveLiteral); BOOST_CLASS_EXPORT_KEY(query::CreateIndex); + +#define LOAD_AND_CONSTRUCT(DerivedClass, ...) \ + template <class TArchive> \ + void load_construct_data(TArchive &ar, DerivedClass *cls, \ + const unsigned int) { \ + ::new (cls) DerivedClass(__VA_ARGS__); \ + } + +namespace boost::serialization { +LOAD_AND_CONSTRUCT(query::Where, 0); +LOAD_AND_CONSTRUCT(query::OrOperator, 0); +LOAD_AND_CONSTRUCT(query::XorOperator, 0); +LOAD_AND_CONSTRUCT(query::AndOperator, 0); +LOAD_AND_CONSTRUCT(query::AdditionOperator, 0); +LOAD_AND_CONSTRUCT(query::SubtractionOperator, 0); +LOAD_AND_CONSTRUCT(query::MultiplicationOperator, 0); +LOAD_AND_CONSTRUCT(query::DivisionOperator, 0); +LOAD_AND_CONSTRUCT(query::ModOperator, 0); +LOAD_AND_CONSTRUCT(query::NotEqualOperator, 0); +LOAD_AND_CONSTRUCT(query::EqualOperator, 0); +LOAD_AND_CONSTRUCT(query::LessOperator, 0); +LOAD_AND_CONSTRUCT(query::GreaterOperator, 0); +LOAD_AND_CONSTRUCT(query::LessEqualOperator, 0); +LOAD_AND_CONSTRUCT(query::GreaterEqualOperator, 0); +LOAD_AND_CONSTRUCT(query::InListOperator, 0); +LOAD_AND_CONSTRUCT(query::ListMapIndexingOperator, 0); +LOAD_AND_CONSTRUCT(query::ListSlicingOperator, 0, nullptr, nullptr, nullptr); +LOAD_AND_CONSTRUCT(query::IfOperator, 0, nullptr, nullptr, nullptr); +LOAD_AND_CONSTRUCT(query::NotOperator, 0); +LOAD_AND_CONSTRUCT(query::UnaryPlusOperator, 0); +LOAD_AND_CONSTRUCT(query::UnaryMinusOperator, 0); +LOAD_AND_CONSTRUCT(query::IsNullOperator, 0); +LOAD_AND_CONSTRUCT(query::PrimitiveLiteral, 0); +LOAD_AND_CONSTRUCT(query::ListLiteral, 0); +LOAD_AND_CONSTRUCT(query::MapLiteral, 0); +LOAD_AND_CONSTRUCT(query::Identifier, 0, ""); +LOAD_AND_CONSTRUCT(query::PropertyLookup, 0, nullptr, "", + GraphDbTypes::Property()); +LOAD_AND_CONSTRUCT(query::LabelsTest, 0, nullptr, + std::vector<GraphDbTypes::Label>()); +LOAD_AND_CONSTRUCT(query::Function, 0); +LOAD_AND_CONSTRUCT(query::Aggregation, 0, nullptr, nullptr, + query::Aggregation::Op::COUNT); +LOAD_AND_CONSTRUCT(query::All, 0, nullptr, nullptr, nullptr); +LOAD_AND_CONSTRUCT(query::ParameterLookup, 0); +LOAD_AND_CONSTRUCT(query::NamedExpression, 0); +LOAD_AND_CONSTRUCT(query::NodeAtom, 0); +LOAD_AND_CONSTRUCT(query::EdgeAtom, 0); +LOAD_AND_CONSTRUCT(query::Pattern, 0); +LOAD_AND_CONSTRUCT(query::SingleQuery, 0); +LOAD_AND_CONSTRUCT(query::CypherUnion, 0); +LOAD_AND_CONSTRUCT(query::Query, 0); +LOAD_AND_CONSTRUCT(query::Create, 0); +LOAD_AND_CONSTRUCT(query::Match, 0); +LOAD_AND_CONSTRUCT(query::Return, 0); +LOAD_AND_CONSTRUCT(query::With, 0); +LOAD_AND_CONSTRUCT(query::Delete, 0); +LOAD_AND_CONSTRUCT(query::SetProperty, 0); +LOAD_AND_CONSTRUCT(query::SetProperties, 0); +LOAD_AND_CONSTRUCT(query::SetLabels, 0); +LOAD_AND_CONSTRUCT(query::RemoveProperty, 0); +LOAD_AND_CONSTRUCT(query::RemoveLabels, 0); +LOAD_AND_CONSTRUCT(query::Merge, 0); +LOAD_AND_CONSTRUCT(query::Unwind, 0); +LOAD_AND_CONSTRUCT(query::CreateIndex, 0); +} // namespace boost::serialization + +#undef LOAD_AND_CONSTRUCT +