12 #ifndef eckit_utils_DataHandleFactory_H
13 #define eckit_utils_DataHandleFactory_H
18 #include "eckit/filesystem/PathName.h"
30 typedef std::map<std::string, DataHandleFactory*>
Storage;
35 static eckit::DataHandle*
openForRead(
const std::string&);
36 static eckit::DataHandle*
openForWrite(
const std::string&,
const eckit::Length& = eckit::Length(0));
38 static void buildMultiHandle(eckit::MultiHandle&,
const std::vector<std::string>&);
44 static std::pair<std::string,std::string>
splitPrefix(
const std::string&);
46 static eckit::DataHandle*
makeHandle(
const std::string&,
const std::string&);
48 virtual eckit::DataHandle*
makeHandle(
const std::string&)
const = 0;
49 std::string
prefix()
const;
static void registerFactories()
std::string prefix() const
static eckit::DataHandle * makeHandle(const std::string &, const std::string &)
static eckit::DataHandle * openForRead(const std::string &)
virtual eckit::DataHandle * makeHandle(const std::string &) const =0
static void buildMultiHandle(eckit::MultiHandle &, const std::vector< std::string > &)
std::map< std::string, DataHandleFactory * > Storage
static std::pair< std::string, std::string > splitPrefix(const std::string &)
virtual ~DataHandleFactory()
static Storage & factories()
static eckit::DataHandle * openForWrite(const std::string &, const eckit::Length &=eckit::Length(0))