#include <iostream>
#include "matio.h"
#include "boost/multi_array.hpp"

void save_file(array_type& Var1, array_type& Var2, array_type& Var3) {

	const char* filename = "filename.mat";

	mat_t *mat;
	matvar_t *matvar;

	//gernerating the file
	mat = Mat_Open(filename, MAT_ACC_RDWR);

	// Var1
	matvar = Mat_VarCreate("Name1",   MAT_C_DOUBLE, MAT_T_DOUBLE, 2, {Var1.shape()[1], Var1.shape()[0]}, &Var1 [0][0], 0);
	Mat_VarWrite( mat, matvar, 0);
	Mat_VarFree(matvar);

	// Var2
	matvar = Mat_VarCreate("Name2",   MAT_C_DOUBLE, MAT_T_DOUBLE, 2, {Var2.shape()[1], Var2.shape()[0]}, &Var2 [0][0], 0);
	Mat_VarWrite( mat, matvar, 0);
	Mat_VarFree(matvar);

	// Var3
	matvar = Mat_VarCreate("Name3",   MAT_C_DOUBLE, MAT_T_DOUBLE, 2, {Var3.shape()[1], Var3.shape()[0]}, &Var3  [0][0], 0);
	Mat_VarWrite( mat, matvar, 0);
	Mat_VarFree(matvar);

	Mat_Close(mat);
}

void save_matrix(mat_t *mat, matvar_t *matvar, array_type& matrix) {
	
	// arbitrary matrix
	matvar = Mat_VarCreate("Name",   MAT_C_DOUBLE, MAT_T_DOUBLE, 2, {matrix.shape()[1], matrix.shape()[0]}, &matrix [0][0], 0);
	Mat_VarWrite( mat, matvar, 0);
	Mat_VarFree(matvar);
}

template<typename ...Args>
void save_file2(Args ...Arguments) {

}