@@ -69,7 +69,7 @@ namespace cb
69
69
}
70
70
71
71
template <typename T>
72
- explicit operator T ()
72
+ explicit operator T ()
73
73
{
74
74
return (T)key;
75
75
}
@@ -118,6 +118,8 @@ namespace cb
118
118
template <class CommandClass , typename AuxilaryData>
119
119
CommandClass* addCommandData (const key_t & key, const AuxilaryData& data);
120
120
template <class CommandClass , typename AuxilaryData>
121
+ CommandClass* addCommandData (const key_t & key, const std::vector<AuxilaryData>& data);
122
+ template <class CommandClass , typename AuxilaryData>
121
123
CommandClass* addCommandData (const key_t & key, const AuxilaryData* data, uint32_t count);
122
124
// / Adds the given command packet with the given key.
123
125
// /@note Only references the original packet's auxiliary data.
@@ -136,6 +138,8 @@ namespace cb
136
138
template <class CommandClass , class AppendCommandClass , typename AuxilaryData>
137
139
CommandClass* appendCommandData (AppendCommandClass* cmd, const AuxilaryData& data);
138
140
template <class CommandClass , class AppendCommandClass , typename AuxilaryData>
141
+ CommandClass* appendCommandData (AppendCommandClass* prevCmd, const std::vector<AuxilaryData>& data);
142
+ template <class CommandClass , class AppendCommandClass , typename AuxilaryData>
139
143
CommandClass* appendCommandData (AppendCommandClass* prevCmd, const AuxilaryData* data, uint32_t count);
140
144
template <class CommandClass , typename AuxilaryData>
141
145
CommandClass* appendCommandData (cb::CommandPacket* cmd, const AuxilaryData& data);
@@ -320,10 +324,19 @@ namespace cb
320
324
return addCommandData<CommandClass>(key, &data, 1 );
321
325
}
322
326
327
+ COMMAND_TEMPLATE
328
+ template <class CommandClass , typename AuxilaryData>
329
+ CommandClass* COMMAND_QUAL::addCommandData (const key_t & key, const std::vector<AuxilaryData>& data)
330
+ {
331
+ return addCommandData<CommandClass>(key, data.data (), data.size ());
332
+ }
333
+
323
334
COMMAND_TEMPLATE
324
335
template <class CommandClass , typename AuxilaryData>
325
336
CommandClass* COMMAND_QUAL::addCommandData (const key_t & key, const AuxilaryData* data, uint32_t count)
326
337
{
338
+ static_assert (cb::detail::is_pod<AuxilaryData>::value, " AUXILARY_DATA_INVALID_TYPE" );
339
+
327
340
const uint32_t size = sizeof (AuxilaryData) * count;
328
341
CommandClass* cmd = addCommand<CommandClass>(key, size);
329
342
@@ -395,10 +408,19 @@ namespace cb
395
408
return appendCommandData<CommandClass>(prevCmd, &data, 1 );
396
409
}
397
410
411
+ COMMAND_TEMPLATE
412
+ template <class CommandClass , class AppendCommandClass , typename AuxilaryData>
413
+ CommandClass* COMMAND_QUAL::appendCommandData (AppendCommandClass* prevCmd, const std::vector<AuxilaryData>& data)
414
+ {
415
+ return appendCommandData<CommandClass>(prevCmd, data.data (), data.size ());
416
+ }
417
+
398
418
COMMAND_TEMPLATE
399
419
template <class CommandClass , class AppendCommandClass , typename AuxilaryData>
400
420
CommandClass* COMMAND_QUAL::appendCommandData (AppendCommandClass* prevCmd, const AuxilaryData* data, uint32_t count)
401
421
{
422
+ static_assert (cb::detail::is_pod<AuxilaryData>::value, " AUXILARY_DATA_INVALID_TYPE" );
423
+
402
424
const uint32_t size = sizeof (AuxilaryData) * count;
403
425
CommandClass* cmd = appendCommand<CommandClass>(prevCmd, size);
404
426
@@ -449,14 +471,14 @@ namespace cb
449
471
cmd->size = sizeof (AuxilaryData);
450
472
return packet;
451
473
}
452
-
453
- COMMAND_TEMPLATE
454
- void COMMAND_QUAL::sort (sort_func_t sortFunc /* = std::sort<CommandPair*>*/ )
455
- {
474
+
475
+ COMMAND_TEMPLATE
476
+ void COMMAND_QUAL::sort (sort_func_t sortFunc /* = std::sort<CommandPair*>*/ )
477
+ {
456
478
sortFunc (m_commands.data (), m_commands.data () + (int )m_currentIndex.load (std::memory_order_acquire));
457
-
458
- assert (m_commands.size () > m_currentIndex.load (std::memory_order_acquire));
459
- }
479
+
480
+ assert (m_commands.size () > m_currentIndex.load (std::memory_order_acquire));
481
+ }
460
482
461
483
COMMAND_TEMPLATE
462
484
void COMMAND_QUAL::clear ()
0 commit comments