diff --git a/wxdata/include/scwx/wsr88d/rpg/linked_contour_vector_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/linked_contour_vector_packet.hpp index 4ef4e063..c9830567 100644 --- a/wxdata/include/scwx/wsr88d/rpg/linked_contour_vector_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/linked_contour_vector_packet.hpp @@ -35,6 +35,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + private: std::unique_ptr p; }; diff --git a/wxdata/include/scwx/wsr88d/rpg/linked_vector_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/linked_vector_packet.hpp index 4e275790..56a49134 100644 --- a/wxdata/include/scwx/wsr88d/rpg/linked_vector_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/linked_vector_packet.hpp @@ -34,6 +34,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + private: std::unique_ptr p; }; diff --git a/wxdata/include/scwx/wsr88d/rpg/set_color_level_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/set_color_level_packet.hpp index d2395704..902624c3 100644 --- a/wxdata/include/scwx/wsr88d/rpg/set_color_level_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/set_color_level_packet.hpp @@ -34,6 +34,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + static constexpr size_t SIZE = 6u; private: diff --git a/wxdata/include/scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp index bdbbf4dc..422e3eaa 100644 --- a/wxdata/include/scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/text_and_special_symbol_packet.hpp @@ -35,6 +35,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + private: std::unique_ptr p; }; diff --git a/wxdata/include/scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp index 3caf58d3..794a1579 100644 --- a/wxdata/include/scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/unlinked_contour_vector_packet.hpp @@ -35,6 +35,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + private: std::unique_ptr p; }; diff --git a/wxdata/include/scwx/wsr88d/rpg/unlinked_vector_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/unlinked_vector_packet.hpp index ac2d3e5f..418f4fad 100644 --- a/wxdata/include/scwx/wsr88d/rpg/unlinked_vector_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/unlinked_vector_packet.hpp @@ -34,6 +34,8 @@ public: bool Parse(std::istream& is) override; + static std::shared_ptr Create(std::istream& is); + private: std::unique_ptr p; }; diff --git a/wxdata/source/scwx/wsr88d/rpg/linked_contour_vector_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/linked_contour_vector_packet.cpp index e50b5da3..9671043e 100644 --- a/wxdata/source/scwx/wsr88d/rpg/linked_contour_vector_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/linked_contour_vector_packet.cpp @@ -136,6 +136,20 @@ bool LinkedContourVectorPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr +LinkedContourVectorPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rpg/linked_vector_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/linked_vector_packet.cpp index 4ef3d303..7a114d42 100644 --- a/wxdata/source/scwx/wsr88d/rpg/linked_vector_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/linked_vector_packet.cpp @@ -142,6 +142,19 @@ bool LinkedVectorPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr LinkedVectorPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rpg/set_color_level_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/set_color_level_packet.cpp index d38294e6..a1a38f90 100644 --- a/wxdata/source/scwx/wsr88d/rpg/set_color_level_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/set_color_level_packet.cpp @@ -95,6 +95,20 @@ bool SetColorLevelPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr +SetColorLevelPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rpg/text_and_special_symbol_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/text_and_special_symbol_packet.cpp index a37e77ed..2e373097 100644 --- a/wxdata/source/scwx/wsr88d/rpg/text_and_special_symbol_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/text_and_special_symbol_packet.cpp @@ -134,6 +134,20 @@ bool TextAndSpecialSymbolPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr +TextAndSpecialSymbolPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rpg/unlinked_contour_vector_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/unlinked_contour_vector_packet.cpp index 740b8e08..0f287c34 100644 --- a/wxdata/source/scwx/wsr88d/rpg/unlinked_contour_vector_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/unlinked_contour_vector_packet.cpp @@ -120,6 +120,20 @@ bool UnlinkedContourVectorPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr +UnlinkedContourVectorPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx diff --git a/wxdata/source/scwx/wsr88d/rpg/unlinked_vector_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/unlinked_vector_packet.cpp index 5aa57530..06235e96 100644 --- a/wxdata/source/scwx/wsr88d/rpg/unlinked_vector_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/unlinked_vector_packet.cpp @@ -145,6 +145,20 @@ bool UnlinkedVectorPacket::Parse(std::istream& is) return blockValid; } +std::shared_ptr +UnlinkedVectorPacket::Create(std::istream& is) +{ + std::shared_ptr packet = + std::make_shared(); + + if (!packet->Parse(is)) + { + packet.reset(); + } + + return packet; +} + } // namespace rpg } // namespace wsr88d } // namespace scwx