mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 11:00: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
	
	 Dan Paulat
						Dan Paulat