#pragma once #include "DataAdapters/datafile.cpp" #include "DataAdapters/findfilebyid.cpp" #include "ParameterList.h" #include "mregex.h" #include "simple2ddata.h" using michlib::GPL; using michlib::MDateTime; using michlib::RegExp; class BINFILEData { std::vector times; MString datapath; std::unique_ptr data; public: static constexpr const char* name = "BINFILE"; static constexpr const char* disabledactions = "genintfile"; using Data = Simple2DData; BINFILEData() = default; MString Info() const; // TODO: RetVal MString Open(const CLArgs& args); bool isOk() const { return times.size() > 0; } size_t NTimes() const { return times.size(); } MDateTime Time(size_t i) const { if(!isOk() || i >= times.size()) return MDateTime(); return times[i]; } time_t Timestep() const { return isOk() ? (times[1] - times[0]).Seconds() : 0; } explicit operator bool() const { return times.size() > 0; } VarPresence CheckVar(const MString& vname) const { if(vname == "u" || vname == "v") return VarPresence::INTERNAL; if(vname == "U" || vname == "U2") return VarPresence::DERIVED; return VarPresence::NONE; } bool Read(const MString& vname, std::map& cache, size_t i) const; };