57 lines
1.1 KiB
C++
57 lines
1.1 KiB
C++
#include "GPUBaseTool.h"
|
|
|
|
|
|
// »ñÈ¡Îļþ´óС
|
|
extern "C" size_t getfsize(FILE* fp)
|
|
{
|
|
fseek(fp, 0L, SEEK_END);
|
|
size_t size = ftell(fp);
|
|
fseek(fp, 0L, SEEK_SET);
|
|
return size;
|
|
}
|
|
|
|
extern "C" unsigned char* loadBinFromPath(char* binPath, size_t* binpath_len)
|
|
{
|
|
FILE* fd = fopen(binPath, "rb");
|
|
if (NULL == fd)
|
|
{
|
|
perror("Failed to open file");
|
|
return NULL;
|
|
}
|
|
|
|
size_t f_len = getfsize(fd);
|
|
*binpath_len = f_len;
|
|
|
|
unsigned char* buffer = (unsigned char*)malloc(f_len * sizeof(unsigned char));
|
|
if (buffer == NULL)
|
|
{
|
|
perror("Failed to allocate memory");
|
|
fclose(fd);
|
|
return NULL;
|
|
}
|
|
|
|
size_t fread_count = fread(buffer, 1, f_len, fd);
|
|
fclose(fd);
|
|
|
|
if (fread_count != f_len)
|
|
{
|
|
releaseVoidArray(buffer);
|
|
return NULL;
|
|
}
|
|
|
|
return buffer;
|
|
}
|
|
|
|
extern "C" void writeComplexDataBinFile(char* dataPath, size_t datalen, cuComplex* data)
|
|
{
|
|
FILE* pd = fopen(dataPath, "w");
|
|
double* tempdata = (double*)malloc(datalen * 2 * sizeof(double));
|
|
for (long i = 0; i < datalen; i++)
|
|
{
|
|
tempdata[i * 2 + 0] = data[i].x;
|
|
tempdata[i * 2 + 1] = data[i].y;
|
|
}
|
|
fwrite(tempdata, sizeof(double), datalen * 2, pd);
|
|
fclose(pd);
|
|
}
|