/** @(#) mathpos/arraypos.cpp */
/**
* Define las funciones de la cabecera.
*/

#include "arraypos.h"

// array----------------------------------------------------------------------

// Memoria--------------------------------------------------------------------

/**
* Reserva memoria para un arreglo bidimensional de double.
* Uso:
* 	double **M = newFloat2D<double>(n, n);
* @param row Numero de renglones.
* @param col Numero de columnas.
* @return Doble apuntador a arreglo bidimensional.
*/
double ** newDouble2D(int row, int col) {
        double **pArray = new double*[row];
        int i;
        for (i = 0; i < row; ++i) {
        	pArray[i] = new double[col];
        }
        return pArray;
}

/**
* Libera memoria de un arreglo bidimensional de double.
* @param row Numero de renglones.
*/
void deleteDouble2D(double **pArray, int row) {
	int i;
        for (i = 0; i < row; ++i) {
        	delete[] pArray[i];
        }
       	delete []pArray;
}

/**
* Reserva memoria para un arreglo bidimensional de float.
* Uso:
* 	float **M = newFloat2D<float>(n, n);
* @param row Numero de renglones.
* @param col Numero de columnas.
* @return Doble apuntador a arreglo bidimensional.
*/
float ** newFloat2D(int row, int col) {
        float **pArray = new float*[row];
        int i;
        for (i = 0; i < row; ++i) {
        	pArray[i] = new float[col];
        }
        return pArray;
}

/**
* Libera memoria de un arreglo bidimensional de float.
* @param row Numero de renglones.
*/
void deleteFloat2D(float **pArray, int row) {
	int i;
        for (i = 0; i < row; ++i) {
        	delete[] pArray[i];
        }
       	delete []pArray;
}

// vector---------------------------------------------------------------------

/**
* Convierte un vector de long en float.
*/
void vectorLongToFloat(long *pLong, float *pFloat, int count) {
	int i;
        for (i = 0; i < count; ++i) {
        	pFloat[i] = static_cast<float>( pLong[i] );
        }
}
/**
* Solo usarlo con tipos numericos: int, long, float, double.
*/
//template <class TC>
void vectorToZero(long *pVector, int count) {
	int i;
        for (i = 0; i < count; ++i) {
        	pVector[i] = 0L;
        }
}

// Fin------------------------------------------------------------------------