|
|
|
@ -5,56 +5,10 @@ MString Data::Init(const CLArgs& args)
|
|
|
|
|
{ |
|
|
|
|
MString src = args.contains("source") ? args.at("source") : ""; |
|
|
|
|
if(!src.Exist()) return "No source specified"; |
|
|
|
|
if(src == "NEMO") |
|
|
|
|
{ |
|
|
|
|
NEMOData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "NEMOBIO") |
|
|
|
|
{ |
|
|
|
|
NEMOBIOData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "AVISO") |
|
|
|
|
{ |
|
|
|
|
AVISOData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "AVISOLOCAL") |
|
|
|
|
{ |
|
|
|
|
AVISOLOCALData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "HYCOM") |
|
|
|
|
{ |
|
|
|
|
HYCOMData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "BINFILE") |
|
|
|
|
{ |
|
|
|
|
BINFILEData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else if(src == "MODISBINLOCAL") |
|
|
|
|
{ |
|
|
|
|
MODISBINLOCALData data; |
|
|
|
|
auto res = data.Open(args); |
|
|
|
|
if(res.Exist()) return "Can't open source " + src + ":\n" + res; |
|
|
|
|
*this = Data(std::move(data)); |
|
|
|
|
} |
|
|
|
|
else |
|
|
|
|
return "Unknown source: " + src; |
|
|
|
|
|
|
|
|
|
bool res = internal::InitV(*this, src); |
|
|
|
|
if(!res) return "Unknown source: " + src; |
|
|
|
|
auto resop = std::visit([&args = std::as_const(args)](auto& data) -> auto { return data.Open(args); }, *this); |
|
|
|
|
if(resop.Exist()) return "Can't open source " + src + ":\n" + resop; |
|
|
|
|
return ""; |
|
|
|
|
} |
|
|
|
|