mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 13:30:06 +00:00
Exposing additional data from text products and messages
This commit is contained in:
parent
917926a0ec
commit
3ae001c3b9
4 changed files with 100 additions and 60 deletions
|
|
@ -18,14 +18,15 @@ public:
|
|||
explicit TextProductFile();
|
||||
~TextProductFile();
|
||||
|
||||
TextProductFile(const TextProductFile&) = delete;
|
||||
TextProductFile(const TextProductFile&) = delete;
|
||||
TextProductFile& operator=(const TextProductFile&) = delete;
|
||||
|
||||
TextProductFile(TextProductFile&&) noexcept;
|
||||
TextProductFile& operator=(TextProductFile&&) noexcept;
|
||||
|
||||
size_t message_count() const;
|
||||
std::shared_ptr<TextProductMessage> message(size_t i) const;
|
||||
size_t message_count() const;
|
||||
std::vector<std::shared_ptr<TextProductMessage>> messages() const;
|
||||
std::shared_ptr<TextProductMessage> message(size_t i) const;
|
||||
|
||||
bool LoadFile(const std::string& filename);
|
||||
bool LoadData(std::istream& is);
|
||||
|
|
|
|||
|
|
@ -1,16 +1,72 @@
|
|||
#pragma once
|
||||
|
||||
#include <scwx/awips/coded_location.hpp>
|
||||
#include <scwx/awips/coded_time_motion_location.hpp>
|
||||
#include <scwx/awips/pvtec.hpp>
|
||||
#include <scwx/awips/message.hpp>
|
||||
#include <scwx/awips/wmo_header.hpp>
|
||||
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
namespace scwx
|
||||
{
|
||||
namespace awips
|
||||
{
|
||||
|
||||
struct Vtec
|
||||
{
|
||||
PVtec pVtec_;
|
||||
std::string hVtec_;
|
||||
|
||||
Vtec() : pVtec_ {}, hVtec_ {} {}
|
||||
|
||||
Vtec(const Vtec&) = delete;
|
||||
Vtec& operator=(const Vtec&) = delete;
|
||||
|
||||
Vtec(Vtec&&) noexcept = default;
|
||||
Vtec& operator=(Vtec&&) noexcept = default;
|
||||
};
|
||||
|
||||
struct SegmentHeader
|
||||
{
|
||||
std::string ugcString_;
|
||||
std::vector<Vtec> vtecString_;
|
||||
std::vector<std::string> ugcNames_;
|
||||
std::string issuanceDateTime_;
|
||||
|
||||
SegmentHeader() :
|
||||
ugcString_ {}, vtecString_ {}, ugcNames_ {}, issuanceDateTime_ {}
|
||||
{
|
||||
}
|
||||
|
||||
SegmentHeader(const SegmentHeader&) = delete;
|
||||
SegmentHeader& operator=(const SegmentHeader&) = delete;
|
||||
|
||||
SegmentHeader(SegmentHeader&&) noexcept = default;
|
||||
SegmentHeader& operator=(SegmentHeader&&) noexcept = default;
|
||||
};
|
||||
|
||||
struct Segment
|
||||
{
|
||||
std::optional<SegmentHeader> header_;
|
||||
std::vector<std::string> productContent_;
|
||||
std::optional<CodedLocation> codedLocation_;
|
||||
std::optional<CodedTimeMotionLocation> codedMotion_;
|
||||
|
||||
Segment() :
|
||||
header_ {}, productContent_ {}, codedLocation_ {}, codedMotion_ {}
|
||||
{
|
||||
}
|
||||
|
||||
Segment(const Segment&) = delete;
|
||||
Segment& operator=(const Segment&) = delete;
|
||||
|
||||
Segment(Segment&&) noexcept = default;
|
||||
Segment& operator=(Segment&&) noexcept = default;
|
||||
};
|
||||
|
||||
class TextProductMessageImpl;
|
||||
|
||||
class TextProductMessage : public Message
|
||||
|
|
@ -19,13 +75,18 @@ public:
|
|||
explicit TextProductMessage();
|
||||
~TextProductMessage();
|
||||
|
||||
TextProductMessage(const TextProductMessage&) = delete;
|
||||
TextProductMessage(const TextProductMessage&) = delete;
|
||||
TextProductMessage& operator=(const TextProductMessage&) = delete;
|
||||
|
||||
TextProductMessage(TextProductMessage&&) noexcept;
|
||||
TextProductMessage& operator=(TextProductMessage&&) noexcept;
|
||||
|
||||
std::shared_ptr<WmoHeader> wmo_header() const;
|
||||
std::shared_ptr<WmoHeader> wmo_header() const;
|
||||
std::vector<std::string> mnd_header() const;
|
||||
std::vector<std::string> overview_block() const;
|
||||
size_t segment_count() const;
|
||||
std::vector<std::shared_ptr<const Segment>> segments() const;
|
||||
std::shared_ptr<const Segment> segment(size_t s) const;
|
||||
|
||||
size_t data_size() const;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue