From 09649c0fe775cc5d54a2d7d17f515504a5e2437a Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Wed, 12 Jan 2022 00:41:08 -0600 Subject: [PATCH] Use strings instead of character arrays where warranted --- .../wsr88d/rpg/storm_id_symbol_packet.hpp | 7 +++--- .../rpg/text_and_special_symbol_packet.hpp | 4 ++++ .../wsr88d/rpg/storm_id_symbol_packet.cpp | 16 +++++++------ .../rpg/text_and_special_symbol_packet.cpp | 23 +++++++++++++++---- 4 files changed, 36 insertions(+), 14 deletions(-) diff --git a/wxdata/include/scwx/wsr88d/rpg/storm_id_symbol_packet.hpp b/wxdata/include/scwx/wsr88d/rpg/storm_id_symbol_packet.hpp index 20974205..641296a8 100644 --- a/wxdata/include/scwx/wsr88d/rpg/storm_id_symbol_packet.hpp +++ b/wxdata/include/scwx/wsr88d/rpg/storm_id_symbol_packet.hpp @@ -4,6 +4,7 @@ #include #include +#include namespace scwx { @@ -26,9 +27,9 @@ public: StormIdSymbolPacket(StormIdSymbolPacket&&) noexcept; StormIdSymbolPacket& operator=(StormIdSymbolPacket&&) noexcept; - int16_t i_position(size_t i) const; - int16_t j_position(size_t i) const; - const std::array& character(size_t i) const; + int16_t i_position(size_t i) const; + int16_t j_position(size_t i) const; + std::string storm_id(size_t i) const; size_t RecordCount() const override; 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 422e3eaa..fdd5d607 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 @@ -4,6 +4,7 @@ #include #include +#include namespace scwx { @@ -30,6 +31,9 @@ public: uint16_t packet_code() const; uint16_t length_of_block() const; std::optional value_of_text() const; + int16_t start_i() const; + int16_t start_j() const; + std::string text() const; size_t data_size() const override; diff --git a/wxdata/source/scwx/wsr88d/rpg/storm_id_symbol_packet.cpp b/wxdata/source/scwx/wsr88d/rpg/storm_id_symbol_packet.cpp index 6a6ed9f3..c95b6125 100644 --- a/wxdata/source/scwx/wsr88d/rpg/storm_id_symbol_packet.cpp +++ b/wxdata/source/scwx/wsr88d/rpg/storm_id_symbol_packet.cpp @@ -17,11 +17,11 @@ static const std::string logPrefix_ = struct StormIdSymbol { - int16_t iPosition_; - int16_t jPosition_; - std::array character_; + int16_t iPosition_; + int16_t jPosition_; + std::string stormId_; - StormIdSymbol() : iPosition_ {0}, jPosition_ {0}, character_ {0} {} + StormIdSymbol() : iPosition_ {0}, jPosition_ {0}, stormId_ {} {} }; class StormIdSymbolPacketImpl @@ -55,9 +55,9 @@ int16_t StormIdSymbolPacket::j_position(size_t i) const return p->symbol_[i].jPosition_; } -const std::array& StormIdSymbolPacket::character(size_t i) const +std::string StormIdSymbolPacket::storm_id(size_t i) const { - return p->symbol_[i].character_; + return p->symbol_[i].stormId_; } size_t StormIdSymbolPacket::RecordCount() const @@ -85,9 +85,11 @@ bool StormIdSymbolPacket::ParseData(std::istream& is) { StormIdSymbol& s = p->symbol_[i]; + s.stormId_.resize(2); + is.read(reinterpret_cast(&s.iPosition_), 2); is.read(reinterpret_cast(&s.jPosition_), 2); - is.read(reinterpret_cast(s.character_.data()), 2); + is.read(s.stormId_.data(), 2); s.iPosition_ = ntohs(s.iPosition_); s.jPosition_ = ntohs(s.jPosition_); 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 baf3a633..59e47de6 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 @@ -24,7 +24,7 @@ public: valueOfText_ {0}, startI_ {0}, startJ_ {0}, - characters_ {} + text_ {} { } ~TextAndSpecialSymbolPacketImpl() = default; @@ -35,7 +35,7 @@ public: int16_t startI_; int16_t startJ_; - std::vector characters_; + std::string text_; }; TextAndSpecialSymbolPacket::TextAndSpecialSymbolPacket() : @@ -71,6 +71,21 @@ std::optional TextAndSpecialSymbolPacket::value_of_text() const return value; } +int16_t TextAndSpecialSymbolPacket::start_i() const +{ + return p->startI_; +} + +int16_t TextAndSpecialSymbolPacket::start_j() const +{ + return p->startJ_; +} + +std::string TextAndSpecialSymbolPacket::text() const +{ + return p->text_; +} + size_t TextAndSpecialSymbolPacket::data_size() const { return p->lengthOfBlock_ + 4u; @@ -133,8 +148,8 @@ bool TextAndSpecialSymbolPacket::Parse(std::istream& is) if (blockValid) { - p->characters_.resize(textLength); - is.read(reinterpret_cast(p->characters_.data()), textLength); + p->text_.resize(textLength); + is.read(p->text_.data(), textLength); } std::streampos isEnd = is.tellg();