This source file includes following definitions.
- convert
- convert
- convert
- convert
- convert
- convert
- convert
- convert_ClOrdID
1 #ifndef libjmmcg_isimud_exchanges_conversions_mit_to_fix_conversions_hpp
2 #define libjmmcg_isimud_exchanges_conversions_mit_to_fix_conversions_hpp
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 #include "../../exchanges/FIX/v5.0sp2/messages.hpp"
25 #include "../../exchanges/MIT/BIT/messages.hpp"
26 #include "../../exchanges/MIT/JSE/messages.hpp"
27 #include "../../exchanges/MIT/LSE/messages.hpp"
28 #include "../../exchanges/MIT/OSLO/messages.hpp"
29 #include "../../exchanges/MIT/TRQ/messages.hpp"
30
31 namespace isimud { namespace exchanges { namespace FIX { namespace common {
32
33
34
35
36 template<class RefData> constexpr inline int
37 convert(MIT::common::SecurityID_t const &key, RefData const &ref_data, char *buff, [[maybe_unused]] std::size_t sz) {
38 auto const &i=ref_data.lookup_isin().find(key);
39 assert(i!=ref_data.lookup_isin().end());
40 assert(sizeof(typename RefData::lookup_isin_t::mapped_type::element_type)<=sz);
41 jmmcg::memcpy_opt(i->second.isin_.data(), reinterpret_cast<typename RefData::lookup_isin_t::mapped_type::element_type::block_t &>(*buff));
42 return sizeof(typename RefData::lookup_isin_t::mapped_type::element_type);
43 }
44
45
46
47
48 inline ExecType
49 convert(MIT::common::ExecType const &a) noexcept(false) {
50 switch (a) {
51 case MIT::common::ExecType::New:
52 return ExecType::New;
53 case MIT::common::ExecType::Cancelled:
54 return ExecType::Cancelled;
55 case MIT::common::ExecType::Replaced:
56 return ExecType::Replaced;
57 case MIT::common::ExecType::Rejected:
58 return ExecType::Rejected;
59 case MIT::common::ExecType::Suspended:
60 return ExecType::Suspended;
61 case MIT::common::ExecType::Expired:
62 return ExecType::Expired;
63 case MIT::common::ExecType::Restated:
64 return ExecType::Restated;
65 case MIT::common::ExecType::Trade:
66 return ExecType::Trade_PartialFillOrFill;
67 case MIT::common::ExecType::TradeCorrect:
68 return ExecType::TradeCorrect;
69 case MIT::common::ExecType::TradeCancel:
70 return ExecType::TradeCancel;
71 case MIT::common::ExecType::Triggered:
72 return ExecType::TriggeredOrActivatedBySystem;
73 default: {
74 std::ostringstream os;
75 os<<"Unknown MIT ExecType: "<<a;
76 throw std::runtime_error(os.str());
77 }
78 };
79 }
80
81
82
83
84 inline OrdStatus
85 convert(MIT::common::OrderStatus const &a) noexcept(false) {
86 switch (a) {
87 case MIT::common::OrderStatus::New:
88 return OrdStatus::New;
89 case MIT::common::OrderStatus::Partiallyfilled:
90 return OrdStatus::PartiallyFilled;
91 case MIT::common::OrderStatus::Filled:
92 return OrdStatus::Filled;
93 case MIT::common::OrderStatus::Cancelled:
94 return OrdStatus::Cancelled;
95 case MIT::common::OrderStatus::Expired:
96 return OrdStatus::Expired;
97 case MIT::common::OrderStatus::Rejected:
98 return OrdStatus::Rejected;
99 case MIT::common::OrderStatus::Suspended:
100 return OrdStatus::Suspended;
101 default: {
102 std::ostringstream os;
103 os<<"Unknown MIT OrderStatus: "<<a;
104 throw std::runtime_error(os.str());
105 }
106 };
107 }
108
109 inline int
110 convert(std::int32_t a, char *buff, std::size_t sz) noexcept(true) {
111 return jmmcg::tostring(a, buff, sz);
112 }
113
114 inline int
115 convert(std::uint32_t a, char *buff, std::size_t sz) noexcept(true) {
116 return jmmcg::tostring(a, buff, sz);
117 }
118
119 inline int
120 convert(MIT::common::Price_t const &a, char *buff, std::size_t sz) {
121 const double c=static_cast<double>(a)/MIT::common::implied_decimal_places;
122 return jmmcg::tostring(c, buff, sz);
123 }
124
125
126
127
128 constexpr inline char
129 convert(MIT::common::Side const &a) {
130 switch (a) {
131 case MIT::common::Side::Buy:
132 return '1';
133 case MIT::common::Side::Sell:
134 return '2';
135 default:
136 return '?';
137 };
138 }
139
140 template<class DestMsg, class SrcMsg, class OutIter>
141 inline OutIter
142 convert_ClOrdID(SrcMsg const &msg, OutIter data) noexcept(true) {
143 data=DestMsg::template add_field_tag<FieldsFast::ClOrdID>(data);
144 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
145 data+=msg.clientOrderID().size()-1;
146 return data;
147 }
148
149 template<>
150 template<> inline __stdcall
151 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::BIT::MsgTypes::ExecutionReport const &msg, MIT::BIT::MsgTypes::ref_data_t rd)
152 : Header_t() {
153 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
154 data=convert_ClOrdID<Message<v5_0sp2::ExecutionReportSpecific>>(msg, data);
155 data=add_field_tag<FieldsFast::SecurityIDSource>(data);
156 *data=SecurityIDSource::ISIN;
157 ++data;
158 data=add_field_tag<FieldsFast::SecurityID>(data);
159 const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
160 assert(i>0);
161 data+=i;
162 data=add_field_tag<FieldsFast::ExecType>(data);
163 *data=static_cast<char>(convert(msg.execType()));
164 ++data;
165 data=add_field_tag<FieldsFast::Price>(data);
166 const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
167 assert(j>0);
168 data+=j;
169 data=add_field_tag<FieldsFast::OrdStatus>(data);
170 *data=static_cast<char>(convert(msg.orderStatus()));
171 ++data;
172 data=add_field_tag<FieldsFast::OrderQty>(data);
173 const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
174 assert(k>0);
175 data+=k;
176 data=add_field_tag<FieldsFast::LeavesQty>(data);
177 const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
178 assert(l>0);
179 data+=l;
180 data=add_field_tag<FieldsFast::Side>(data);
181 *data=convert(msg.side());
182 ++data;
183
184 finalise_msg(data);
185 }
186
187 template<>
188 template<> inline __stdcall
189 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::JSE::MsgTypes::ExecutionReport const &msg, MIT::JSE::MsgTypes::ref_data_t rd)
190 : Header_t() {
191 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
192 data=add_field_tag<FieldsFast::ClOrdID>(data);
193 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
194 data+=msg.clientOrderID().size()-1;
195 data=add_field_tag<FieldsFast::SecurityIDSource>(data);
196 *data=SecurityIDSource::ISIN;
197 ++data;
198 data=add_field_tag<FieldsFast::SecurityID>(data);
199 const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
200 assert(i>0);
201 data+=i;
202 data=add_field_tag<FieldsFast::ExecType>(data);
203 *data=static_cast<char>(convert(msg.execType()));
204 ++data;
205 data=add_field_tag<FieldsFast::Price>(data);
206 const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
207 assert(j>0);
208 data+=j;
209 data=add_field_tag<FieldsFast::OrdStatus>(data);
210 *data=static_cast<char>(convert(msg.orderStatus()));
211 ++data;
212 data=add_field_tag<FieldsFast::OrderQty>(data);
213 const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
214 assert(k>0);
215 data+=k;
216 data=add_field_tag<FieldsFast::LeavesQty>(data);
217 const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
218 assert(l>0);
219 data+=l;
220 data=add_field_tag<FieldsFast::Side>(data);
221 *data=convert(msg.side());
222 ++data;
223
224 finalise_msg(data);
225 }
226
227 template<>
228 template<> inline __stdcall
229 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::LSE::MsgTypes::ExecutionReport const &msg, MIT::LSE::MsgTypes::ref_data_t rd)
230 : Header_t() {
231 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
232 data=add_field_tag<FieldsFast::ClOrdID>(data);
233 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
234 data+=msg.clientOrderID().size()-1;
235 data=add_field_tag<FieldsFast::SecurityIDSource>(data);
236 *data=SecurityIDSource::ISIN;
237 ++data;
238 data=add_field_tag<FieldsFast::SecurityID>(data);
239 const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
240 assert(i>0);
241 data+=i;
242 data=add_field_tag<FieldsFast::ExecType>(data);
243 *data=static_cast<char>(convert(msg.execType()));
244 ++data;
245 data=add_field_tag<FieldsFast::Price>(data);
246 const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
247 assert(j>0);
248 data+=j;
249 data=add_field_tag<FieldsFast::OrdStatus>(data);
250 *data=static_cast<char>(convert(msg.orderStatus()));
251 ++data;
252 data=add_field_tag<FieldsFast::OrderQty>(data);
253 const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
254 assert(k>0);
255 data+=k;
256 data=add_field_tag<FieldsFast::LeavesQty>(data);
257 const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
258 assert(l>0);
259 data+=l;
260 data=add_field_tag<FieldsFast::Side>(data);
261 *data=convert(msg.side());
262 ++data;
263
264 finalise_msg(data);
265 }
266
267 template<>
268 template<> inline __stdcall
269 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::OSLO::MsgTypes::ExecutionReport const &msg, MIT::OSLO::MsgTypes::ref_data_t rd)
270 : Header_t() {
271 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
272 data=add_field_tag<FieldsFast::ClOrdID>(data);
273 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
274 data+=msg.clientOrderID().size()-1;
275 data=add_field_tag<FieldsFast::SecurityIDSource>(data);
276 *data=SecurityIDSource::ISIN;
277 ++data;
278 data=add_field_tag<FieldsFast::SecurityID>(data);
279 const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
280 assert(i>0);
281 data+=i;
282 data=add_field_tag<FieldsFast::ExecType>(data);
283 *data=static_cast<char>(convert(msg.execType()));
284 ++data;
285 data=add_field_tag<FieldsFast::Price>(data);
286 const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
287 assert(j>0);
288 data+=j;
289 data=add_field_tag<FieldsFast::OrdStatus>(data);
290 *data=static_cast<char>(convert(msg.orderStatus()));
291 ++data;
292 data=add_field_tag<FieldsFast::OrderQty>(data);
293 const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
294 assert(k>0);
295 data+=k;
296 data=add_field_tag<FieldsFast::LeavesQty>(data);
297 const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
298 assert(l>0);
299 data+=l;
300 data=add_field_tag<FieldsFast::Side>(data);
301 *data=convert(msg.side());
302 ++data;
303
304 finalise_msg(data);
305 }
306
307 template<>
308 template<> inline __stdcall
309 Message<v5_0sp2::ExecutionReportSpecific>::Message(MIT::TRQ::MsgTypes::ExecutionReport const &msg, MIT::TRQ::MsgTypes::ref_data_t rd)
310 : Header_t() {
311 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::ExecutionReport>(msg);
312 data=add_field_tag<FieldsFast::ClOrdID>(data);
313 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
314 data+=msg.clientOrderID().size()-1;
315 data=add_field_tag<FieldsFast::SecurityIDSource>(data);
316 *data=SecurityIDSource::ISIN;
317 ++data;
318 data=add_field_tag<FieldsFast::SecurityID>(data);
319 const int i=convert(msg.instrumentID(), rd, data, this->data_.size()-(data-this->data_.begin()));
320 assert(i>0);
321 data+=i;
322 data=add_field_tag<FieldsFast::ExecType>(data);
323 *data=static_cast<char>(convert(msg.execType()));
324 ++data;
325 data=add_field_tag<FieldsFast::Price>(data);
326 const int j=convert(msg.executedPrice(), data, this->data_.size()-(data-this->data_.begin()));
327 assert(j>0);
328 data+=j;
329 data=add_field_tag<FieldsFast::OrdStatus>(data);
330 *data=static_cast<char>(convert(msg.orderStatus()));
331 ++data;
332 data=add_field_tag<FieldsFast::OrderQty>(data);
333 const int k=convert(msg.executedQty(), data, this->data_.size()-(data-this->data_.begin()));
334 assert(k>0);
335 data+=k;
336 data=add_field_tag<FieldsFast::LeavesQty>(data);
337 const int l=convert(msg.leavesQty(), data, this->data_.size()-(data-this->data_.begin()));
338 assert(l>0);
339 data+=l;
340 data=add_field_tag<FieldsFast::Side>(data);
341 *data=convert(msg.side());
342 ++data;
343
344 finalise_msg(data);
345 }
346
347 template<>
348 template<> inline __stdcall
349 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::BIT::MsgTypes::ExecutionReport const &msg)
350 : Header_t() {
351 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
352 data=add_field_tag<FieldsFast::RefSeqNum>(data);
353 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
354 assert(i>0);
355 data+=i;
356 finalise_msg(data);
357 }
358
359 template<>
360 template<> inline __stdcall
361 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::JSE::MsgTypes::ExecutionReport const &msg)
362 : Header_t() {
363 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
364 data=add_field_tag<FieldsFast::RefSeqNum>(data);
365 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
366 assert(i>0);
367 data+=i;
368 finalise_msg(data);
369 }
370
371 template<>
372 template<> inline __stdcall
373 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::LSE::MsgTypes::ExecutionReport const &msg)
374 : Header_t() {
375 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
376 data=add_field_tag<FieldsFast::RefSeqNum>(data);
377 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
378 assert(i>0);
379 data+=i;
380 finalise_msg(data);
381 }
382
383 template<>
384 template<> inline __stdcall
385 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::OSLO::MsgTypes::ExecutionReport const &msg)
386 : Header_t() {
387 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
388 data=add_field_tag<FieldsFast::RefSeqNum>(data);
389 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
390 assert(i>0);
391 data+=i;
392 finalise_msg(data);
393 }
394
395 template<>
396 template<> inline __stdcall
397 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::TRQ::MsgTypes::ExecutionReport const &msg)
398 : Header_t() {
399 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::Reject>(msg);
400 data=add_field_tag<FieldsFast::RefSeqNum>(data);
401 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
402 assert(i>0);
403 data+=i;
404 finalise_msg(data);
405 }
406
407 template<>
408 template<> inline __stdcall
409 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::BIT::MsgTypes::OrderCancelReject const &msg)
410 : Header_t() {
411 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
412 data=add_field_tag<FieldsFast::ClOrdID>(data);
413 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
414 data+=msg.clientOrderID().size()-1;
415 data=add_field_tag<FieldsFast::OrderID>(data);
416 jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
417 data+=msg.orderID.size()-1;
418
419
420 finalise_msg(data);
421 }
422
423 template<>
424 template<> inline __stdcall
425 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::JSE::MsgTypes::OrderCancelReject const &msg)
426 : Header_t() {
427 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
428 data=add_field_tag<FieldsFast::ClOrdID>(data);
429 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
430 data+=msg.clientOrderID().size()-1;
431 data=add_field_tag<FieldsFast::OrderID>(data);
432 jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
433 data+=msg.orderID.size()-1;
434
435
436 finalise_msg(data);
437 }
438
439 template<>
440 template<> inline __stdcall
441 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::LSE::MsgTypes::OrderCancelReject const &msg)
442 : Header_t() {
443 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
444 data=add_field_tag<FieldsFast::ClOrdID>(data);
445 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
446 data+=msg.clientOrderID().size()-1;
447 data=add_field_tag<FieldsFast::OrderID>(data);
448 jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
449 data+=msg.orderID.size()-1;
450
451
452 finalise_msg(data);
453 }
454
455 template<>
456 template<> inline __stdcall
457 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::OSLO::MsgTypes::OrderCancelReject const &msg)
458 : Header_t() {
459 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
460 data=add_field_tag<FieldsFast::ClOrdID>(data);
461 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
462 data+=msg.clientOrderID().size()-1;
463 data=add_field_tag<FieldsFast::OrderID>(data);
464 jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
465 data+=msg.orderID.size()-1;
466
467
468 finalise_msg(data);
469 }
470
471 template<>
472 template<> inline __stdcall
473 Message<v5_0sp2::CancelRejectedSpecific>::Message(MIT::TRQ::MsgTypes::OrderCancelReject const &msg)
474 : Header_t() {
475 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::OrderCancelReject>(msg);
476 data=add_field_tag<FieldsFast::ClOrdID>(data);
477 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
478 data+=msg.clientOrderID().size()-1;
479 data=add_field_tag<FieldsFast::OrderID>(data);
480 jmmcg::memcpy_opt(msg.orderID, reinterpret_cast<MIT::common::OrderID_t &>(*data));
481 data+=msg.orderID.size()-1;
482
483
484 finalise_msg(data);
485 }
486
487 template<>
488 template<> inline __stdcall
489 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::BIT::MsgTypes::Reject const &msg)
490 : Header_t() {
491 underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
492 data=add_field_tag<FieldsFast::ClOrdID>(data);
493 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
494 data+=msg.clientOrderID().size()-1;
495
496 finalise_msg(data);
497 }
498
499 template<>
500 template<> inline __stdcall
501 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::JSE::MsgTypes::Reject const &msg)
502 : Header_t() {
503 underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
504 data=add_field_tag<FieldsFast::ClOrdID>(data);
505 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
506 data+=msg.clientOrderID().size()-1;
507
508 finalise_msg(data);
509 }
510
511 template<>
512 template<> inline __stdcall
513 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::LSE::MsgTypes::Reject const &msg)
514 : Header_t() {
515 underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
516 data=add_field_tag<FieldsFast::ClOrdID>(data);
517 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
518 data+=msg.clientOrderID().size()-1;
519
520 finalise_msg(data);
521 }
522
523 template<>
524 template<> inline __stdcall
525 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::OSLO::MsgTypes::Reject const &msg)
526 : Header_t() {
527 underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
528 data=add_field_tag<FieldsFast::ClOrdID>(data);
529 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
530 data+=msg.clientOrderID().size()-1;
531
532 finalise_msg(data);
533 }
534
535 template<>
536 template<> inline __stdcall
537 Message<v5_0sp2::OrderRejectedSpecific>::Message(MIT::TRQ::MsgTypes::Reject const &msg)
538 : Header_t() {
539 underlying_fix_data_buffer::iterator data=set_header<MsgTypes::Reject>();
540 data=add_field_tag<FieldsFast::ClOrdID>(data);
541 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
542 data+=msg.clientOrderID().size()-1;
543
544 finalise_msg(data);
545 }
546
547 template<>
548 template<> inline __stdcall
549 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::BIT::MsgTypes::BusinessReject const &msg)
550 : Header_t() {
551 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
552 data=add_field_tag<FieldsFast::ClOrdID>(data);
553 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
554 data+=msg.clientOrderID().size()-1;
555 data=add_field_tag<FieldsFast::RefSeqNum>(data);
556 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
557 assert(i>0);
558 data+=i;
559
560 finalise_msg(data);
561 }
562
563 template<>
564 template<> inline __stdcall
565 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::JSE::MsgTypes::BusinessReject const &msg)
566 : Header_t() {
567 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
568 data=add_field_tag<FieldsFast::ClOrdID>(data);
569 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
570 data+=msg.clientOrderID().size()-1;
571 data=add_field_tag<FieldsFast::RefSeqNum>(data);
572 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
573 assert(i>0);
574 data+=i;
575
576 finalise_msg(data);
577 }
578
579 template<>
580 template<> inline __stdcall
581 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::LSE::MsgTypes::BusinessReject const &msg)
582 : Header_t() {
583 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
584 data=add_field_tag<FieldsFast::ClOrdID>(data);
585 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
586 data+=msg.clientOrderID().size()-1;
587 data=add_field_tag<FieldsFast::RefSeqNum>(data);
588 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
589 assert(i>0);
590 data+=i;
591
592 finalise_msg(data);
593 }
594
595 template<>
596 template<> inline __stdcall
597 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::OSLO::MsgTypes::BusinessReject const &msg)
598 : Header_t() {
599 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
600 data=add_field_tag<FieldsFast::ClOrdID>(data);
601 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
602 data+=msg.clientOrderID().size()-1;
603 data=add_field_tag<FieldsFast::RefSeqNum>(data);
604 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
605 assert(i>0);
606 data+=i;
607
608 finalise_msg(data);
609 }
610 template<>
611 template<> inline __stdcall
612 Message<v5_0sp2::BusinessMessageRejectSpecific>::Message(MIT::TRQ::MsgTypes::BusinessReject const &msg)
613 : Header_t() {
614 underlying_fix_data_buffer::iterator data=set_sequence_num<MsgTypes::BusinessMessageReject>(msg);
615 data=add_field_tag<FieldsFast::ClOrdID>(data);
616 jmmcg::memcpy_opt(msg.clientOrderID(), reinterpret_cast<MIT::common::ClientOrderID_t &>(*data));
617 data+=msg.clientOrderID().size()-1;
618 data=add_field_tag<FieldsFast::RefSeqNum>(data);
619 const int i=convert(msg.sequenceNumber, data, this->data_.size()-(data-this->data_.begin()));
620 assert(i>0);
621 data+=i;
622
623 finalise_msg(data);
624 }
625
626
627 } } } }
628
629 #endif