mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 21:10:04 +00:00
Refactoring to unique product message types, in order to support more products
This commit is contained in:
parent
235c060b17
commit
dc545f19e9
11 changed files with 742 additions and 177 deletions
|
|
@ -1,7 +1,6 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rpg/level3_message_header.hpp>
|
||||
#include <scwx/wsr88d/rpg/product_symbology_block.hpp>
|
||||
#include <scwx/wsr88d/rpg/level3_message.hpp>
|
||||
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
|
@ -25,8 +24,7 @@ public:
|
|||
Level3File(Level3File&&) noexcept;
|
||||
Level3File& operator=(Level3File&&) noexcept;
|
||||
|
||||
std::shared_ptr<rpg::Level3MessageHeader> message_header() const;
|
||||
std::shared_ptr<rpg::ProductSymbologyBlock> product_symbology_block() const;
|
||||
std::shared_ptr<rpg::Level3Message> message() const;
|
||||
|
||||
bool LoadFile(const std::string& filename);
|
||||
bool LoadData(std::istream& is);
|
||||
|
|
|
|||
49
wxdata/include/scwx/wsr88d/rpg/graphic_product_message.hpp
Normal file
49
wxdata/include/scwx/wsr88d/rpg/graphic_product_message.hpp
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rpg/graphic_alphanumeric_block.hpp>
|
||||
#include <scwx/wsr88d/rpg/level3_message.hpp>
|
||||
#include <scwx/wsr88d/rpg/product_description_block.hpp>
|
||||
#include <scwx/wsr88d/rpg/product_symbology_block.hpp>
|
||||
#include <scwx/wsr88d/rpg/tabular_alphanumeric_block.hpp>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rpg
|
||||
{
|
||||
|
||||
class GraphicProductMessageImpl;
|
||||
|
||||
class GraphicProductMessage : public Level3Message
|
||||
{
|
||||
public:
|
||||
explicit GraphicProductMessage();
|
||||
~GraphicProductMessage();
|
||||
|
||||
GraphicProductMessage(const GraphicProductMessage&) = delete;
|
||||
GraphicProductMessage& operator=(const GraphicProductMessage&) = delete;
|
||||
|
||||
GraphicProductMessage(GraphicProductMessage&&) noexcept;
|
||||
GraphicProductMessage& operator=(GraphicProductMessage&&) noexcept;
|
||||
|
||||
std::shared_ptr<ProductDescriptionBlock> description_block() const;
|
||||
std::shared_ptr<ProductSymbologyBlock> symbology_block() const;
|
||||
std::shared_ptr<GraphicAlphanumericBlock> graphic_block() const;
|
||||
std::shared_ptr<TabularAlphanumericBlock> tabular_block() const;
|
||||
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<GraphicProductMessage>
|
||||
Create(Level3MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<GraphicProductMessageImpl> p;
|
||||
};
|
||||
|
||||
} // namespace rpg
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
41
wxdata/include/scwx/wsr88d/rpg/level3_message.hpp
Normal file
41
wxdata/include/scwx/wsr88d/rpg/level3_message.hpp
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rpg/level3_message_header.hpp>
|
||||
#include <scwx/wsr88d/message.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rpg
|
||||
{
|
||||
|
||||
class Level3MessageImpl;
|
||||
|
||||
class Level3Message : public Message
|
||||
{
|
||||
protected:
|
||||
explicit Level3Message();
|
||||
|
||||
Level3Message(const Level3Message&) = delete;
|
||||
Level3Message& operator=(const Level3Message&) = delete;
|
||||
|
||||
Level3Message(Level3Message&&) noexcept;
|
||||
Level3Message& operator=(Level3Message&&) noexcept;
|
||||
|
||||
public:
|
||||
virtual ~Level3Message();
|
||||
|
||||
size_t data_size() const override;
|
||||
|
||||
const Level3MessageHeader& header() const;
|
||||
|
||||
void set_header(Level3MessageHeader&& header);
|
||||
|
||||
private:
|
||||
std::unique_ptr<Level3MessageImpl> p;
|
||||
};
|
||||
|
||||
} // namespace rpg
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
30
wxdata/include/scwx/wsr88d/rpg/level3_message_factory.hpp
Normal file
30
wxdata/include/scwx/wsr88d/rpg/level3_message_factory.hpp
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rpg/level3_message.hpp>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rpg
|
||||
{
|
||||
|
||||
class Level3MessageFactory
|
||||
{
|
||||
private:
|
||||
explicit Level3MessageFactory() = delete;
|
||||
~Level3MessageFactory() = delete;
|
||||
|
||||
Level3MessageFactory(const Level3MessageFactory&) = delete;
|
||||
Level3MessageFactory& operator=(const Level3MessageFactory&) = delete;
|
||||
|
||||
Level3MessageFactory(Level3MessageFactory&&) noexcept = delete;
|
||||
Level3MessageFactory& operator=(Level3MessageFactory&&) noexcept = delete;
|
||||
|
||||
public:
|
||||
static std::shared_ptr<Level3Message> Create(std::istream& is);
|
||||
};
|
||||
|
||||
} // namespace rpg
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
45
wxdata/include/scwx/wsr88d/rpg/tabular_product_message.hpp
Normal file
45
wxdata/include/scwx/wsr88d/rpg/tabular_product_message.hpp
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/wsr88d/rpg/level3_message.hpp>
|
||||
#include <scwx/wsr88d/rpg/product_description_block.hpp>
|
||||
#include <scwx/wsr88d/rpg/tabular_alphanumeric_block.hpp>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace wsr88d
|
||||
{
|
||||
namespace rpg
|
||||
{
|
||||
|
||||
class TabularProductMessageImpl;
|
||||
|
||||
class TabularProductMessage : public Level3Message
|
||||
{
|
||||
public:
|
||||
explicit TabularProductMessage();
|
||||
~TabularProductMessage();
|
||||
|
||||
TabularProductMessage(const TabularProductMessage&) = delete;
|
||||
TabularProductMessage& operator=(const TabularProductMessage&) = delete;
|
||||
|
||||
TabularProductMessage(TabularProductMessage&&) noexcept;
|
||||
TabularProductMessage& operator=(TabularProductMessage&&) noexcept;
|
||||
|
||||
std::shared_ptr<ProductDescriptionBlock> description_block() const;
|
||||
std::shared_ptr<TabularAlphanumericBlock> tabular_block() const;
|
||||
|
||||
bool Parse(std::istream& is) override;
|
||||
|
||||
static std::shared_ptr<TabularProductMessage>
|
||||
Create(Level3MessageHeader&& header, std::istream& is);
|
||||
|
||||
private:
|
||||
std::unique_ptr<TabularProductMessageImpl> p;
|
||||
};
|
||||
|
||||
} // namespace rpg
|
||||
} // namespace wsr88d
|
||||
} // namespace scwx
|
||||
Loading…
Add table
Add a link
Reference in a new issue