#pragma once #include #include #include namespace scwx::awips { class TextProductFileImpl; class TextProductFile { public: explicit TextProductFile(); ~TextProductFile(); TextProductFile(const TextProductFile&) = delete; TextProductFile& operator=(const TextProductFile&) = delete; TextProductFile(TextProductFile&&) noexcept; TextProductFile& operator=(TextProductFile&&) noexcept; [[nodiscard]] std::size_t message_count() const; [[nodiscard]] std::vector> messages() const; [[nodiscard]] std::shared_ptr message(size_t i) const; bool LoadFile(const std::string& filename); bool LoadData(const std::string& filename, std::istream& is); private: class Impl; std::unique_ptr p; }; } // namespace scwx::awips