.. _program_listing_file_src_sparsebase_io_mtx_reader.h: Program Listing for File mtx_reader.h ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``src/sparsebase/io/mtx_reader.h``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp #ifndef SPARSEBASE_PROJECT_MTX_READER_H #define SPARSEBASE_PROJECT_MTX_READER_H #include "sparsebase/config.h" #include "sparsebase/io/reader.h" namespace sparsebase::io { #define MMX_PREFIX "%%MatrixMarket" template class MTXReader : public Reader, public ReadsCSR, public ReadsCOO, public ReadsArray { public: explicit MTXReader(std::string filename, bool convert_to_zero_index = true); format::COO *ReadCOO() const override; format::CSR *ReadCSR() const override; format::Array *ReadArray() const override; ~MTXReader() override; private: enum MTXObjectOptions { matrix, vector }; enum MTXFormatOptions { coordinate, array }; enum MTXFieldOptions { real, double_field, complex, integer, pattern }; enum MTXSymmetryOptions { general = 0, symmetric = 1, skew_symmetric = 2, hermitian = 3 }; struct MTXOptions { MTXObjectOptions object; MTXFormatOptions format; MTXFieldOptions field; MTXSymmetryOptions symmetry; }; MTXOptions ParseHeader(std::string header_line) const; format::Array *ReadCoordinateIntoArray() const; format::Array *ReadArrayIntoArray() const; template format::COO *ReadArrayIntoCOO() const; template format::COO *ReadCoordinateIntoCOO() const; std::string filename_; bool convert_to_zero_index_; MTXOptions options_; }; } // namespace sparsebase::io #ifdef _HEADER_ONLY #include "mtx_reader.cc" #endif #endif // SPARSEBASE_PROJECT_MTX_READER_H