#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "matrix.h"

// TODO Matrix-Funktionen implementieren

Matrix createMatrix(unsigned int rows, unsigned int cols)
{
    if (rows != 0 && cols != 0)
	{
        Matrix matrix;
        matrix.rows = rows;
        matrix.cols = cols;
        matrix.buffer = (float*) calloc(rows * cols, sizeof(float)); //belegt den speicherplatz mit calloc -> mit 0
        return matrix;
    }
	else
	{    //Bei einer "falschen" Matrix eine leere zurückgeben, ohne speicher zu belegen
        printf("Nullgroesse der Matrix!!!\n");
        Matrix matrix;
        matrix.rows = 0;
        matrix.cols = 0;
        matrix.buffer = NULL;
        return matrix;
    }
}

void clearMatrix(Matrix *matrix)
{
    free(matrix->buffer);	//gibt den heap speicher frei
	matrix->buffer = NULL;	//zeiger auf NULL setzen
}

void setMatrixAt(MatrixType value, Matrix matrix, unsigned int rowIdx, unsigned int colIdx)
{

}

MatrixType getMatrixAt(const Matrix matrix, unsigned int rowIdx, unsigned int colIdx)
{
    
}

Matrix add(const Matrix matrix1, const Matrix matrix2)
{
    
}

Matrix multiply(const Matrix matrix1, const Matrix matrix2)
{
    
}