#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