Nexrad File Factory

This commit is contained in:
Dan Paulat 2022-02-10 22:10:22 -06:00
parent 3620bfd13a
commit a32029cb31
11 changed files with 322 additions and 31 deletions

View file

@ -1,5 +1,6 @@
#pragma once
#include <scwx/wsr88d/nexrad_file.hpp>
#include <scwx/wsr88d/rda/digital_radar_data.hpp>
#include <scwx/wsr88d/rda/volume_coverage_pattern_data.hpp>
@ -19,7 +20,7 @@ class Ar2vFileImpl;
* the Archive II/User, Document Number 2620010H, published by the WSR-88D Radar
* Operations Center.
*/
class Ar2vFile
class Ar2vFile : public NexradFile
{
public:
explicit Ar2vFile();
@ -46,6 +47,7 @@ public:
std::chrono::system_clock::time_point time) const;
bool LoadFile(const std::string& filename);
bool LoadData(std::istream& is);
private:
std::unique_ptr<Ar2vFileImpl> p;

View file

@ -1,5 +1,6 @@
#pragma once
#include <scwx/wsr88d/nexrad_file.hpp>
#include <scwx/wsr88d/rpg/level3_message.hpp>
#include <memory>
@ -12,7 +13,7 @@ namespace wsr88d
class Level3FileImpl;
class Level3File
class Level3File : public NexradFile
{
public:
explicit Level3File();

View file

@ -0,0 +1,35 @@
#pragma once
#include <memory>
#include <string>
namespace scwx
{
namespace wsr88d
{
class NexradFileImpl;
class NexradFile
{
protected:
explicit NexradFile();
NexradFile(const NexradFile&) = delete;
NexradFile& operator=(const NexradFile&) = delete;
NexradFile(NexradFile&&) noexcept;
NexradFile& operator=(NexradFile&&) noexcept;
public:
virtual ~NexradFile();
virtual bool LoadFile(const std::string& filename) = 0;
virtual bool LoadData(std::istream& is) = 0;
private:
std::unique_ptr<NexradFileImpl> p;
};
} // namespace wsr88d
} // namespace scwx

View file

@ -0,0 +1,28 @@
#pragma once
#include <scwx/wsr88d/nexrad_file.hpp>
namespace scwx
{
namespace wsr88d
{
class NexradFileFactory
{
private:
explicit NexradFileFactory() = delete;
~NexradFileFactory() = delete;
NexradFileFactory(const NexradFileFactory&) = delete;
NexradFileFactory& operator=(const NexradFileFactory&) = delete;
NexradFileFactory(NexradFileFactory&&) noexcept = delete;
NexradFileFactory& operator=(NexradFileFactory&&) noexcept = delete;
public:
static std::shared_ptr<NexradFile> Create(const std::string& filename);
static std::shared_ptr<NexradFile> Create(std::istream& is);
};
} // namespace wsr88d
} // namespace scwx