#pragma once

class CSRSparseMatrix
{
public:
    CSRSparseMatrix(void);
    virtual ~CSRSparseMatrix(void);
    static void unitTest();
    void read();
    void print() const;
    void printCSR() const;
    bool equal(const CSRSparseMatrix &B) const;
    void release();
    void transpose(const CSRSparseMatrix &A);
    void multiply(const CSRSparseMatrix &B);
    void setValue(const int M, const int N, const int NNZ, 
                  int *A, int *IA, int *JA);
private:
    int m_M;   // number of rows
    int m_N;   // number of columns
    int m_NNZ; // Number of Non-Zero elements
    int *m_A;
    int *m_IA;
    int *m_JA;
};

