/* *********************************************************************** // // Copyright (C) 2025 -- The 4D-STAR Collaboration // File Author: Emily Boudreaux // Last Modified: March 20, 2025 // // 4DSSE is free software; you can use it and/or modify // it under the terms and restrictions the GNU General Library Public // License version 3 (GPLv3) as published by the Free Software Foundation. // // 4DSSE is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // See the GNU Library General Public License for more details. // // You should have received a copy of the GNU Library General Public License // along with this software; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // // *********************************************************************** */ #ifndef EOSIO_H #define EOSIO_H #include #include #include // EOS table format includes #include "helm.h" using EOSTable = std::variant< std::unique_ptr >; /** * @class EosIO * @brief Handles the input/output operations for EOS tables. * * The EosIO class is responsible for loading and managing EOS tables from files. * It supports different formats, currently only HELM format. * * Example usage: * @code * EosIO eosIO("path/to/file"); * std::string format = eosIO.getFormat(); * EOSTable& table = eosIO.getTable(); * @endcode */ class EosIO { private: std::string m_filename; ///< The filename of the EOS table. bool m_loaded = false; ///< Flag indicating if the table is loaded. std::string m_format; ///< The format of the EOS table. EOSTable m_table; ///< The EOS table data. /** * @brief Loads the EOS table from the file. */ void load(); /** * @brief Loads the HELM format EOS table. */ void loadHelm(); public: /** * @brief Constructs an EosIO object with the given filename. * @param filename The filename of the EOS table. */ EosIO(const std::string filename); /** * @brief Default destructor. */ ~EosIO() = default; /** * @brief Gets the format of the EOS table. * @return The format of the EOS table as a string. */ std::string getFormat() const; /** * @brief Gets the EOS table. * @return A reference to the EOS table. */ EOSTable& getTable(); }; #endif // EOSIO_H