90 lines
2.5 KiB
C++
90 lines
2.5 KiB
C++
/* ***********************************************************************
|
|
//
|
|
// 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 <string>
|
|
#include <variant>
|
|
#include <memory>
|
|
|
|
// EOS table format includes
|
|
#include "helm.h"
|
|
|
|
using EOSTable = std::variant<
|
|
std::unique_ptr<helmholtz::HELMTable>
|
|
>;
|
|
|
|
/**
|
|
* @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
|