30 #ifndef _COMBBLAS_FILE_HEADER_ 31 #define _COMBBLAS_FILE_HEADER_ 54 f = fopen(inputname.c_str(),
"rb");
56 memset(&hinfo, 0,
sizeof(hinfo));
59 std::cerr <<
"Problem reading binary input file\n";
64 size_t result = fread(fourletters,
sizeof(
char), 4, f);
65 fourletters[4] =
'\0';
66 if (result != 4) { std::cout <<
"Error in fread of header, only " << result <<
" entries read" << std::endl;
return hinfo;}
68 if(strcmp(fourletters,
"HKDT") != 0)
72 hinfo.fileexists =
true;
77 hinfo.fileexists =
true;
78 hinfo.headerexists =
true;
82 results[0] = fread(&(hinfo.version),
sizeof(hinfo.version), 1, f);
83 results[1] = fread(&(hinfo.objsize),
sizeof(hinfo.objsize), 1, f);
84 results[2] = fread(&(hinfo.format),
sizeof(hinfo.format), 1, f);
86 results[3] = fread(&(hinfo.m),
sizeof(hinfo.m), 1, f);
87 results[4] = fread(&(hinfo.n),
sizeof(hinfo.n), 1, f);
88 results[5] = fread(&(hinfo.nnz),
sizeof(hinfo.nnz), 1, f);
89 if(std::accumulate(results,results+6,0) != 6)
91 std::cout <<
"The required 6 fields (version, objsize, format, m,n,nnz) are not read" << std::endl;
92 std::cout <<
"Only " << std::accumulate(results,results+6,0) <<
" fields are read" << std::endl;
97 std::cout <<
"Version " << hinfo.version <<
", object size " << hinfo.objsize << std::endl;
98 std::cout <<
"Rows " << hinfo.m <<
", columns " << hinfo.m <<
", nonzeros " << hinfo.nnz << std::endl;
102 seeklength = 4 + 6 *
sizeof(uint64_t);
HeaderInfo ParseHeader(const std::string &inputname, FILE *&f, int &seeklength)