diff --git a/include/sp/protocol/MessageFactory.h b/include/sp/protocol/MessageFactory.h index f2775b9..3212dd9 100644 --- a/include/sp/protocol/MessageFactory.h +++ b/include/sp/protocol/MessageFactory.h @@ -7,42 +7,7 @@ namespace sp { -namespace details { - -template -using ArrayType = std::vector(void)>>; - - - -template -struct ArrayFiller {}; - -template -struct ArrayFiller> { - static ArrayType ArrayCreate() { - ArrayType array; - array.reserve(sizeof...(TMessages)); - ArrayFiller::ArrayAppend(array); - return array; - } -}; - -template -struct ArrayFiller { - static void ArrayAppend(details::ArrayType& array) { - ArrayFiller::ArrayAppend(array); - ArrayFiller::ArrayAppend(array); - } -}; - -template -struct ArrayFiller { - static void ArrayAppend(details::ArrayType& array) { - array.push_back([]() -> std::unique_ptr { return std::make_unique(); }); - } -}; - -} // namespace details +#include template class MessageFactory { diff --git a/include/sp/protocol/message/ArrayFillerImpl.inl b/include/sp/protocol/message/ArrayFillerImpl.inl new file mode 100644 index 0000000..410afba --- /dev/null +++ b/include/sp/protocol/message/ArrayFillerImpl.inl @@ -0,0 +1,38 @@ +#pragma once + +namespace details { + +template +using ArrayType = std::vector(void)>>; + + + +template +struct ArrayFiller {}; + +template +struct ArrayFiller> { + static ArrayType ArrayCreate() { + ArrayType array; + array.reserve(sizeof...(TMessages)); + ArrayFiller::ArrayAppend(array); + return array; + } +}; + +template +struct ArrayFiller { + static void ArrayAppend(details::ArrayType& array) { + ArrayFiller::ArrayAppend(array); + ArrayFiller::ArrayAppend(array); + } +}; + +template +struct ArrayFiller { + static void ArrayAppend(details::ArrayType& array) { + array.push_back([]() -> std::unique_ptr { return std::make_unique(); }); + } +}; + +} // namespace details \ No newline at end of file