44// License, v. 2.0. If a copy of the MPL was not distributed with this
55// file, You can obtain one at http://mozilla.org/MPL/2.0/.
66
7- #include < boost/serialization/access.hpp>
8- #include < boost/archive/binary_iarchive.hpp>
9- #include < boost/archive/binary_oarchive.hpp>
10- #include < boost/archive/text_iarchive.hpp>
11- #include < boost/archive/text_oarchive.hpp>
12-
137#ifdef _MSC_VER
148#pragma warning(push)
159#pragma warning(disable : 4005) // warning C4005: 'XXX': macro redefinition
1913
2014// //////////////////////////////////////////////////////////////////////////////
2115
22- #define SERIALIZATION_BEGIN_LOAD (t ) \
23- template <class Archive > \
24- void load (Archive &ar, t &v, const unsigned )
25-
26- #define SERIALIZATION_BEGIN_SAVE (t ) \
27- template <class Archive > \
28- void save (Archive &ar, const t &v, const unsigned )
29-
30- #define SERIALIZATION_BEGIN_SPLIT \
31- BOOST_SERIALIZATION_SPLIT_FREE (SERIALIZATION_TYPE) \
32- namespace boost::serialization \
33- { \
34- SERIALIZATION_BEGIN_LOAD (SERIALIZATION_TYPE) \
35- {
36-
37- #define SERIALIZATION_END }
38- #define SERIALIZATION_SPLIT_CONTINUE } SERIALIZATION_BEGIN_SAVE(SERIALIZATION_TYPE) {
39- #define SERIALIZATION_SPLIT_END } SERIALIZATION_END
40-
41- // //////////////////////////////////////////////////////////////////////////////
42-
4316#define SERIALIZATION_TYPE ::path
4417SERIALIZATION_BEGIN_SPLIT
4518 String s;
4619 ar >> s;
4720 v = fs::u8path(s);
48- SERIALIZATION_SPLIT_CONTINUE
49- String s = v.u8string ();
50- ar << s;
21+ SERIALIZATION_SPLIT_CONTINUE
22+ ar << v.u8string();
5123SERIALIZATION_SPLIT_END
5224
5325// //////////////////////////////////////
@@ -87,41 +59,35 @@ SERIALIZATION_SPLIT_CONTINUE
8759SERIALIZATION_SPLIT_END
8860
8961// //////////////////////////////////////
90-
91- namespace boost ::serialization
92- {
93-
94- template <class Archive >
95- void serialize (Archive &ar, ::sw::builder::Command::Argument &a, const unsigned )
96- {
97- ar << a.toString ();
98- }
99-
100- } // namespace boost::serialization
101-
102- /* StringHashMap<int> gatherStrings() const
103- {
104- for (auto &c : commands)
105- {
106- insert(c->in.file.u8string());
107- insert(c->out.file.u8string());
108- insert(c->err.file.u8string());
109- }
110- }*/
62+
63+ #define SERIALIZATION_TYPE ::sw::builder::Command::Argument
64+ SERIALIZATION_BEGIN_UNIFIED
65+ ar & a.toString();
66+ SERIALIZATION_UNIFIED_END
11167
11268// //////////////////////////////////////
11369
114- #define SERIALIZATION_TYPE ::sw::builder::Command
70+ #define SERIALIZATION_TYPE ::primitives::Command::Stream
71+ SERIALIZATION_BEGIN_UNIFIED
72+ ar & v.text;
73+ ar & v.file;
74+ ar & v.append;
75+ SERIALIZATION_UNIFIED_END
76+
77+ // //////////////////////////////////////
78+
79+ #define SERIALIZATION_TYPE ::primitives::Command
11580SERIALIZATION_BEGIN_SPLIT
116- ar >> v.name ;
117- ar >> v.command_storage ;
118- ar >> v.working_directory ;
119- ar >> v.environment ;
120- ar >> v.first_response_file_argument ;
121- ar >> v.always ;
122- ar >> v.remove_outputs_before_execution ;
123- ar >> v.strict_order ;
124- ar >> v.output_dirs ;
81+ ar & v.working_directory;
82+ ar & v.environment;
83+
84+ ar & v.in;
85+ ar & v.out;
86+ ar & v.err;
87+
88+ /* if (v.next)
89+ throw SW_RUNTIME_ERROR("Some error");
90+ ar & v.prev;*/
12591
12692 size_t sz;
12793 ar >> sz;
@@ -133,25 +99,51 @@ SERIALIZATION_BEGIN_SPLIT
13399 {
134100 ar >> s;
135101 v.push_back (s);
136- }
137- ar >> v.inputs ;
138- ar >> v.outputs ;
102+ }
139103SERIALIZATION_SPLIT_CONTINUE
140- ar << v.getName ();
141- ar << v.command_storage ;
142- ar << v.working_directory ;
143- ar << v.environment ;
144- ar << v.first_response_file_argument ;
145- ar << v.always ;
146- ar << v.remove_outputs_before_execution ;
147- ar << v.strict_order ;
148- ar << v.output_dirs ;
104+ ar & v.working_directory;
105+ ar & v.environment;
106+
107+ ar & v.in;
108+ ar & v.out;
109+ ar & v.err;
110+
111+ // ar & v.prev;
149112
150113 ar << v.arguments.size();
151114 for (auto &a : v.arguments)
152- ar << a->toString ();
153- ar << v.inputs ;
154- ar << v.outputs ;
115+ ar << a->toString ();
116+ SERIALIZATION_SPLIT_END
117+
118+ // //////////////////////////////////////
119+
120+ #define SERIALIZATION_TYPE ::sw::builder::Command
121+ SERIALIZATION_BEGIN_SPLIT
122+ ar & base_object<::primitives::Command>(v);
123+
124+ ar & v.name;
125+ ar & v.command_storage;
126+ ar & v.first_response_file_argument;
127+ ar & v.always;
128+ ar & v.remove_outputs_before_execution;
129+ ar & v.strict_order;
130+ ar & v.output_dirs;
131+
132+ ar & v.inputs;
133+ ar & v.outputs;
134+ SERIALIZATION_SPLIT_CONTINUE
135+ ar & base_object<::primitives::Command>(v);
136+
137+ ar & v.getName();
138+ ar & v.command_storage;
139+ ar & v.first_response_file_argument;
140+ ar & v.always;
141+ ar & v.remove_outputs_before_execution;
142+ ar & v.strict_order;
143+ ar & v.output_dirs;
144+
145+ ar & v.inputs;
146+ ar & v.outputs;
155147SERIALIZATION_SPLIT_END
156148
157149// //////////////////////////////////////
@@ -167,14 +159,14 @@ SERIALIZATION_BEGIN_SPLIT
167159 ar >> *c;
168160 }
169161SERIALIZATION_SPLIT_CONTINUE
170- SW_UNIMPLEMENTED ;
162+ SW_UNREACHABLE ;
171163SERIALIZATION_SPLIT_END
172164
173165// //////////////////////////////////////
174166
175167#define SERIALIZATION_TYPE ::std::vector<::sw::ExecutionPlan::PtrT>
176168SERIALIZATION_BEGIN_SPLIT
177- SW_UNIMPLEMENTED ;
169+ SW_UNREACHABLE ;
178170SERIALIZATION_SPLIT_CONTINUE
179171 ar << v.size();
180172 for (auto c : v)
0 commit comments