OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
CheckSum_Output_Files Class Reference

#include <checksum_output_files.h>

Public Member Functions

int open_binary_file (std::string filename)
void close_binary_file ()
std::list< std::string > Animation ()
std::list< std::string > Time_History ()
std::list< std::string > Out_File (std::fstream *new_file)
std::list< std::tuple< std::string, std::string > > Checksum_File (std::fstream *new_file)

Private Member Functions

void remove_cr (std::string &line)
void remove_trailing_blanks (std::string &str)
void SWAP_MANY2BYTES (uint16_t *intPtr, size_t number)
void SWAP_MANY4BYTES (int *intPtr, size_t number)
void SWAP_MANY8BYTES (double *intPtr, size_t number)
void SWAP_BYTESINDATA (void *itemList, size_t itemCount, size_t sizeOfItem)
int Ufread (void *pchar, size_t sizeOfItem, size_t numItems, bool text=false)

Private Attributes

int debug =0
FILE * fstream
gzFile gzstream
std::string file_mode

Detailed Description

Definition at line 56 of file checksum_output_files.h.

Member Function Documentation

◆ Animation()

std::list< std::string > CheckSum_Output_Files::Animation ( )

Definition at line 156 of file checksum_output_files.cpp.

157{
158 typedef unsigned char Boolean;
159
160 int magic; // object format
161 int flagA[10]; // array of flags
162 float a_time; // state time
163
164 // 3D GEOMETRY
165 int nbElts3D = 0; // number of 8nodes elements
166 int nbParts3D = 0; // number of parts
167 int nbEFunc3D = 0; // number of element scalar values
168 int nbTens3D = 0; // number of tensors
169 int *connect3DA = nullptr; // connectivity array of 8 nbElts3D
170 Boolean *delElt3DA = nullptr; // are the elements deleted or not, array of nbElts3D
171 int *defPart3DA = nullptr; // part definition: array of nbParts3D
172 char **pText3DA = nullptr; // part name: array of nbParts3D
173 char **fText3DA = nullptr; // array of scalar name: nbEFunc3D
174 float *eFunc3DA = nullptr; // scalar value per element array of nbEFunc3D*nbElts3D
175 char **tText3DA = nullptr; // tensor name array of nbTens3D
176 float *tensVal3DA = nullptr; // tens value array of 6*nbTens3D*nbElt3D
177 float *eMass3DA = nullptr; // nbElt3D, elt mass
178 int *elNum3DA = nullptr; // nbElt3D, intern elt numbering
179
180 // 2D GEOMETRY
181 int nbFacets = 0; // number of 4nodes elements
182 int nbNodes = 0; // total number of nodes
183 int nbParts = 0; // number of parts
184 int nbFunc = 0; // number of nodal scalar values
185 int nbEFunc = 0; // number of element scalar values
186 int nbVect = 0; // number of vectors
187 int nbTens = 0; // number of tensors
188 int nbSkew = 0; // number of skews
189 uint16_t *skewShortValA = nullptr; // array of the skew values defined in uint16_t * 3000 ;
190 float *skewValA = nullptr; // array of the skew values for each elt
191 float *coorA = nullptr; // coordinates array of 3*nbNodes
192 int *connectA = nullptr; // connectivity array of 4 * nbFacets
193 char *delEltA = nullptr; // are the elements deleted or not, array of nbFacets
194 int *defPartA = nullptr; // part definition: array of nbParts
195 uint16_t *normShortA = nullptr; // facet normal in uint16_t : array of 3*nbNodes
196 float *funcA = nullptr; // scalar value per node array of nbFunc*nbNodes
197 float *eFuncA = nullptr; // scalar value per element array of nbEFunc*nbFacets
198
199 char tmpText[128];
200 int i;
201 FILE *inf=NULL;
202
203 std::list<std::string> checksum_list;
204
205 // read Animation file
206 Ufread(&magic, sizeof(int), 1);
207
208 switch (magic){
209 case FASTMAGI10:
210 {
211 Ufread(&a_time, sizeof(float), 1); // time of the file
212 Ufread(tmpText, sizeof(char), 81); // Time text
213 Ufread(tmpText, sizeof(char), 81); // ModAnim text
214 Ufread(tmpText, sizeof(char), 81); // RadiossRun text
215 // array of 10 flags
216 // flagA[0] defines if theflagA mass is saved or not
217 // flagA[1] defines if the node-element numbering arrays are saved or not
218 // flagA[2] defines format :if there is 3D geometry
219 // flagA[3] defines format :if there is 1D geometry
220 // flagA[4] defines hierarchy
221 // flagA[5] defines node/elt list for TH
222 // flagA[6] defines if there is a new skew for tensor 2D
223 // flagA[7] define if there is SPH format
224 // flagA[8] to flagsA[9] are not yet used
225
226 Ufread(flagA, sizeof(int), 10);
227 // ********************
228 // 2D GEOMETRY
229 // ********************
230 Ufread(&nbNodes, sizeof(int), 1); // number of nodes
231 Ufread(&nbFacets, sizeof(int), 1); // number of 4nodes elements
232 Ufread(&nbParts, sizeof(int), 1); // number of parts
233 Ufread(&nbFunc, sizeof(int), 1); // number of nodal scalar values
234 Ufread(&nbEFunc, sizeof(int), 1); // number of elemt scalar values
235 Ufread(&nbVect, sizeof(int), 1); // number of vector values
236 Ufread(&nbTens, sizeof(int), 1); // number of tensor values
237 Ufread(&nbSkew, sizeof(int), 1); // number of skews array of the skew values defined in uint16_t * 3000
238
239 if (nbSkew)
240 {
241 skewShortValA = (uint16_t *)malloc(nbSkew * 6 * sizeof(uint16_t));
242 skewValA = (float *)malloc(nbSkew * 6 * sizeof(float));
243 Ufread(skewShortValA, sizeof(uint16_t), nbSkew * 6);
244 for (i = 0; i < 6 * nbSkew; i++)
245 {
246 skewValA[i] = ((float)skewShortValA[i]) /
248 }
249 }
250
251 // coordinates array: containing the x,y,z coordinates of each node
252 coorA = (float *)malloc(3 * nbNodes * sizeof(float));
253 Ufread(coorA, sizeof(float), 3 * nbNodes);
254 free(coorA);
255
256 // element connectivity array with local node numbering [0 to (nbNodes-1)]
257 if (nbFacets)
258 {
259 connectA = (int *)malloc(nbFacets * 4 * sizeof(int));
260 Ufread(connectA, sizeof(int), nbFacets * 4);
261 free(connectA);
262
263 // deleted elements : the deleted elements stay in their original parts,
264 // the delEltA indicates which elements are deleted or not
265 delEltA = (char *)malloc(nbFacets * sizeof(char));
266 Ufread(delEltA, sizeof(char), nbFacets);
267 free(delEltA);
268 }
269 // parts definition: array containing an index on thelast facet which defines each part.
270 if (nbParts != 0)
271 {
272 defPartA = (int *)malloc(nbParts * sizeof(int));
273 Ufread(defPartA, sizeof(int), nbParts);
274 free(defPartA);
275
276 // part texts which defines the name of each part Each name does not exceed 50 characters.
277 for (i = 0; i < nbParts; i++){
278 Ufread(tmpText, sizeof(char), 50);
279 }
280 }
281 // array of the norm values for each nodes the norm are defined in uint16_t * 3000
282
283 normShortA = (uint16_t *)malloc(3 * nbNodes * sizeof(uint16_t));
284 Ufread(normShortA, sizeof(uint16_t), 3 * nbNodes);
285 free(normShortA);
286
287 // scalar values
288 if (nbFunc + nbEFunc)
289 {
290 // array of total scalar functions names (nodal + element)
291 for (i = 0; i < (nbFunc + nbEFunc); i++)
292 {
293 Ufread(tmpText, sizeof(char), 81);
294
295 if (strncmp(tmpText, "ZCHKSM_",7) == 0 )
296 {
297 std::string checksum(tmpText);
298 checksum = checksum.substr(7);
299 checksum_list.push_back(checksum);
300 }
301
302 }
303 funcA = (float *)malloc(nbFunc * nbNodes * sizeof(float));
304 eFuncA = (float *)malloc(nbEFunc * nbFacets * sizeof(float));
305 if (nbFunc){
306 Ufread(funcA, sizeof(float), nbNodes * nbFunc);
307 }
308
309 if (nbEFunc){
310 Ufread(eFuncA, sizeof(float), nbFacets * nbEFunc);
311 }
312 free(funcA);
313 free(eFuncA);
314 }
315 }
316 }
317 return checksum_list;
318}
#define SHORT2FLOAT
#define FASTMAGI10
int Ufread(void *pchar, size_t sizeOfItem, size_t numItems, bool text=false)

◆ Checksum_File()

std::list< std::tuple< std::string, std::string > > CheckSum_Output_Files::Checksum_File ( std::fstream * new_file)

Definition at line 587 of file checksum_output_files.cpp.

587 {
588 std::list<std::tuple<std::string,std::string>> checksum_list;
589 int not_found=1;
590 std::string line;
591 while (getline(*new_file, line) && not_found) {
592 remove_cr(line); // Remove carriage return characters
593 if (line == " OUTPUT FILES CHECKSUM DIGESTS") { // Engine output format has 1 space, Starter
594
595 if (getline(*new_file, line)){
596 // 1 blank lines
597 while( not_found && getline(*new_file, line) ){ // Read all lines until "CHECKSUM :" is no more found
598 if (line.length() > 4){
599 std::string comp=line.substr(4); // Remove front blanks
600 size_t pos =comp.find_last_of(' ');
601 std::string checksum = comp.substr(pos+1);
602 std::string filename = comp.substr(0,pos);
603
604 checksum_list.push_back(make_tuple(filename,checksum));
605
606 }else{
607 not_found = 0;
608 }
609 }
610
611 }
612 not_found=0; // Stop reading the file, we found the checksum section
613 }
614 }
615 return checksum_list;
616 }
void remove_cr(std::string &line)
int comp(int a, int b)

◆ close_binary_file()

void CheckSum_Output_Files::close_binary_file ( )

Definition at line 120 of file checksum_output_files.cpp.

120 {
121 if (file_mode == "gz"){
122 gzclose(gzstream);
123 }else{
124 fclose(fstream);
125 }
126
127 }

◆ open_binary_file()

int CheckSum_Output_Files::open_binary_file ( std::string filename)

Definition at line 87 of file checksum_output_files.cpp.

87 {
88 int success=0;
89 std::string extention=filename.substr(filename.find_last_of(".") + 1);
90
91 if (extention == "gz"){
92 // Open gzipped file
93 file_mode="gz";
94 gzstream = gzopen(filename.c_str(), "rb");
95 if (gzstream == NULL){
96 success=0;
97 }else{
98 success=1;
99 }
100 }
101 else{
102 // Open standard file
103 file_mode="std";
104
105#ifdef _WIN64
106 fopen_s(&fstream, filename.c_str(), "rb");
107#else
108 fstream = fopen((const char*)filename.c_str(), "rb");
109#endif
110 if (fstream == NULL){
111 success=0;
112 }else{
113 success=1;
114 }
115 }
116 return success;
117 }

◆ Out_File()

std::list< std::string > CheckSum_Output_Files::Out_File ( std::fstream * new_file)

Definition at line 552 of file checksum_output_files.cpp.

552 {
553 // -----------------------------------------------------------------------------------
554 std::list<std::string> checksum_list;
555
556 int not_found=1;
557 std::string line;
558 while (getline(*new_file, line) && not_found) {
559 remove_cr(line); // Remove carriage return characters
560 if (line == " CHECKSUM DIGESTS" || line == " CHECKSUM DIGESTS") { // Engine output format has 1 space, Starter
561 if (getline(*new_file, line)){ // 2 blank lines
562 if (getline(*new_file, line)){
563 while( not_found && getline(*new_file, line) ){ // Read all lines until "CHECKSUM :" is no more found
564 std::string comp=line.substr(0, 15);
565 if (comp == " CHECKSUM : "){
566
567 std::string checksum = line.substr(15);
568 checksum_list.push_back(checksum);
569
570 if (debug){
571 cout << "Checksum found: " << checksum << endl;
572 }
573
574 }else{
575 not_found = 0;
576 }
577 }
578 }
579
580 }
581 not_found=0; // Stop reading the file, we found the checksum section
582 }
583 }
584 return checksum_list;
585 }

◆ remove_cr()

void CheckSum_Output_Files::remove_cr ( std::string & line)
private

Definition at line 28 of file checksum_output_files.cpp.

28 {
29
30 line.erase(std::remove(line.begin(), line.end(), '\r'), line.end());
31 }

◆ remove_trailing_blanks()

void CheckSum_Output_Files::remove_trailing_blanks ( std::string & str)
private

Definition at line 36 of file checksum_output_files.cpp.

36 {
37 str.erase(std::find_if(str.rbegin(), str.rend(), [](unsigned char ch) {
38 return !std::isspace(ch);
39 }).base(), str.end());
40 }

◆ SWAP_BYTESINDATA()

void CheckSum_Output_Files::SWAP_BYTESINDATA ( void * itemList,
size_t itemCount,
size_t sizeOfItem )
inlineprivate

Definition at line 60 of file checksum_output_files.cpp.

60 {
61 uint16_t *uint16_tCopy;
62 int *intCopy;
63 double *doubleCopy;
64 switch ((sizeOfItem)){
65 case 1:
66 break;
67 case 2:
68 uint16_tCopy = (uint16_t *)(itemList);
69 SWAP_MANY2BYTES(uint16_tCopy, (itemCount));
70 break;
71 case 4:
72 intCopy = (int *)(itemList);
73 SWAP_MANY4BYTES(intCopy, (itemCount));
74 break;
75 case 8:
76 doubleCopy = (double *)(itemList);
77 SWAP_MANY8BYTES(doubleCopy, (itemCount));
78 break;
79 }
80 }
void SWAP_MANY4BYTES(int *intPtr, size_t number)
void SWAP_MANY8BYTES(double *intPtr, size_t number)
void SWAP_MANY2BYTES(uint16_t *intPtr, size_t number)

◆ SWAP_MANY2BYTES()

void CheckSum_Output_Files::SWAP_MANY2BYTES ( uint16_t * intPtr,
size_t number )
inlineprivate

Definition at line 42 of file checksum_output_files.cpp.

42 {
43 for (size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
44 intPtr[ptrIndex] = htons((intPtr[ptrIndex]));
45 }
46 }

◆ SWAP_MANY4BYTES()

void CheckSum_Output_Files::SWAP_MANY4BYTES ( int * intPtr,
size_t number )
inlineprivate

Definition at line 48 of file checksum_output_files.cpp.

48 {
49 for (size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
50 intPtr[ptrIndex] = ntohl((intPtr[ptrIndex]));
51 }
52 }

◆ SWAP_MANY8BYTES()

void CheckSum_Output_Files::SWAP_MANY8BYTES ( double * intPtr,
size_t number )
inlineprivate

Definition at line 54 of file checksum_output_files.cpp.

54 {
55 for (size_t ptrIndex = 0; ptrIndex < (number); ptrIndex++){
56 intPtr[ptrIndex] = htobe64(intPtr[ptrIndex]);
57 }
58 }

◆ Time_History()

std::list< std::string > CheckSum_Output_Files::Time_History ( )

Definition at line 322 of file checksum_output_files.cpp.

323 {
324 int i,j;
325 int TH_Version;
326 char NameRequest[100];
327 char checksum[100];
328 char string_value[101];
329 float float_variable;
330 int dummy_variable;
331 int NUMMAT,NUMGEO,NVAR,NBELEM,NBSUBSF,NBPARTF,NSUBS;
332 int NPART_NTHPART,NTHGRP2,NGLOB;
333 int titleLength=0;
334 std::list<std::string> checksum_list;
335
336 Ufread(&dummy_variable,sizeof(int),1);
337
338 // Time History Version
339 Ufread(&TH_Version,sizeof(int),1);
340 if(TH_Version >= 4021){
341 titleLength = 100;
342 }
343 else if(TH_Version >= 3050){
344 titleLength = 100;
345 }
346 else if(TH_Version >= 3041){
347 titleLength = 80;
348 }
349 else{
350 titleLength = 40;
351 }
352
353 // Deck rootname
354 Ufread(string_value,sizeof(char),80,true);
355 Ufread(&dummy_variable,sizeof(int),1);
356
357 // deck version date
358 Ufread(&dummy_variable,sizeof(int),1);
359 Ufread(string_value,sizeof(char),80,true);
360 Ufread(&dummy_variable,sizeof(int),1);
361
362 if(TH_Version >= 3050)
363 {
364 // ADDITIONAL RECORDS
365 Ufread(&dummy_variable,sizeof(int),1);
366 Ufread(&dummy_variable,sizeof(int),1);
367 Ufread(&dummy_variable,sizeof(int),1);
368
369 // 1ST RECORD : title length
370 Ufread(&dummy_variable,sizeof(int),1);
371 Ufread(&dummy_variable,sizeof(int),1);
372 Ufread(&dummy_variable,sizeof(int),1);
373
374 // 2ND RECORD : FAC_MASS,FAC_LENGTH,FAC_TIME
375 Ufread(&dummy_variable,sizeof(int),1);
376 Ufread(&float_variable,sizeof(float),1);
377 Ufread(&float_variable,sizeof(float),1);
378 Ufread(&float_variable,sizeof(float),1);
379 Ufread(&dummy_variable,sizeof(int),1);
380 }
381
382 // HIERARCHY INFO
383 Ufread(&dummy_variable,sizeof(int),1);
384
385 // NPART_NTHPART, NUMMAT, NUMGEO, NSUBS, NTHGRP2, NGLOB
386 Ufread(&NPART_NTHPART,sizeof(int),1);
387 Ufread(&NUMMAT,sizeof(int),1);
388 Ufread(&NUMGEO,sizeof(int),1);
389 Ufread(&NSUBS,sizeof(int),1);
390 Ufread(&NTHGRP2,sizeof(int),1);
391 Ufread(&NGLOB,sizeof(int),1);
392
393 Ufread(&dummy_variable,sizeof(int),1);
394
395 // NGLOB Value
396 // -------------------------------------------------
397 if(NGLOB > 0)
398 {
399 Ufread(&dummy_variable,sizeof(int),1);
400 for(i=0;i<NGLOB;i++){
401 Ufread(&dummy_variable,sizeof(int),1);
402 }
403 Ufread(&dummy_variable,sizeof(int),1);
404 }
405
406 // Part Description
407 // -------------------------------------------------
408 if(NPART_NTHPART > 0)
409 {
410 for(i=0;i<NPART_NTHPART;i++){
411 Ufread(&dummy_variable,sizeof(int),1);
412 Ufread(&dummy_variable,sizeof(int),1);
413 Ufread(string_value,sizeof(char),titleLength,true);
414 //cout << "Part title : " << string_value << endl;
415 Ufread(&dummy_variable,sizeof(int),1);
416 Ufread(&dummy_variable,sizeof(int),1);
417 Ufread(&dummy_variable,sizeof(int),1);
418 Ufread(&NVAR,sizeof(int),1); // NVAR : number of variables
419 // cout << "NVAR : " << NVAR << endl;
420 Ufread(&dummy_variable,sizeof(int),1);
421 if (NVAR > 0){
422 int *dummy_array;
423 dummy_array = (int*)malloc((NVAR+2)*sizeof(int));
424 Ufread(dummy_array,sizeof(int),NVAR+2);
425 free (dummy_array);
426 }
427 }
428 }
429 // Material Description
430 // -------------------------------------------------
431 if(NUMMAT > 0)
432 {
433 for(i=0;i<NUMMAT;i++){
434 Ufread(&dummy_variable,sizeof(int),1);
435 Ufread(&dummy_variable,sizeof(int),1);
436 Ufread(string_value,sizeof(char),titleLength,true);
437 //cout << "Mat title : " << string_value << endl;
438 Ufread(&dummy_variable,sizeof(int),1);
439 }
440 }
441
442 // Properties Description
443 // -------------------------------------------------
444 if(NUMGEO > 0)
445 {
446 for(i=0;i<NUMGEO;i++){
447 Ufread(&dummy_variable,sizeof(int),1);
448 Ufread(&dummy_variable,sizeof(int),1);
449 Ufread(string_value,sizeof(char),titleLength,true);
450 //cout << "Prop title : " << string_value << endl;
451 Ufread(&dummy_variable,sizeof(int),1);
452 }
453 }
454
455 // Subset Description
456 // -------------------------------------------------
457 if(NSUBS > 0)
458 {
459 for(i=0;i<NSUBS;i++){
460 Ufread(&dummy_variable,sizeof(int),1);
461 Ufread(&dummy_variable,sizeof(int),1);
462 Ufread(&dummy_variable,sizeof(int),1);
463 Ufread(&NBSUBSF,sizeof(int),1); // NBSUBSF
464 Ufread(&NBPARTF,sizeof(int),1); // NBPARTF
465 Ufread(&NVAR,sizeof(int),1);
466 Ufread(string_value,sizeof(char),titleLength,true);
467 //cout << "Subset title : " << string_value << endl;
468 //cout << "NBSUBSF : " << NBSUBSF << endl;
469 //cout << "NBPARTF : " << NBPARTF << endl;
470 //cout << "NVAR : " << NBPARTF << endl;
471 Ufread(&dummy_variable,sizeof(int),1);
472
473 if (NBSUBSF > 0){
474 int* dummy_array;
475 dummy_array = (int*)malloc((NBSUBSF+2)*sizeof(int));
476 Ufread(dummy_array,sizeof(int),NBSUBSF+2);
477 free (dummy_array);
478 }
479
480 if (NBPARTF > 0){
481 int *dummy_array;
482 dummy_array = (int*)malloc((NBPARTF+2)*sizeof(int));
483 Ufread(dummy_array,sizeof(int),NBPARTF+2);
484 free (dummy_array);
485 }
486
487 if (NVAR > 0){
488 int *dummy_array;
489 dummy_array = (int*)malloc((NVAR+2)*sizeof(int));
490 Ufread(dummy_array,sizeof(int),NVAR+2);
491 free (dummy_array);
492 }
493 }
494 }
495
496 // Time History Group
497 // -------------------------------------------------
498 if(NTHGRP2 > 0)
499 {
500 for(i=0;i<NTHGRP2;i++){
501 Ufread(&dummy_variable,sizeof(int),1);
502 Ufread(&dummy_variable,sizeof(int),1);
503 Ufread(&dummy_variable,sizeof(int),1);
504 Ufread(&dummy_variable,sizeof(int),1);
505
506 Ufread(&NBELEM,sizeof(int),1); // NBELEM
507 Ufread(&NVAR,sizeof(int),1); // NVAR
508
509 Ufread(NameRequest,sizeof(char),titleLength,true);
510 // cout << "TH Group title : " << NameRequest << endl;
511
512 int isCheckSum = 0;
513 if (strncmp(NameRequest, "CHECKSUM", 8) == 0) isCheckSum = 1;
514
515 Ufread(&dummy_variable,sizeof(int),1);
516
517 for(j=0;j<NBELEM;j++){
518 Ufread(&dummy_variable,sizeof(int),1);
519 Ufread(&dummy_variable,sizeof(int),1);
520 Ufread(checksum,sizeof(char),titleLength,true);
521 if (isCheckSum == 1){
522
523 std::string checksum_str(checksum);
524 remove_trailing_blanks(checksum_str);
525 checksum_list.push_back(checksum_str);
526 //cout << "checksum : " << checksum_str << endl;
527 }
528 Ufread(&dummy_variable,sizeof(int),1);
529 }
530
531 int *dummy_array;
532 dummy_array = (int*)malloc((NVAR+2)*sizeof(int));
533 Ufread(dummy_array,sizeof(int),NVAR+2);
534 free (dummy_array);
535 }
536 }
537 return checksum_list;
538 }
void remove_trailing_blanks(std::string &str)

◆ Ufread()

int CheckSum_Output_Files::Ufread ( void * pchar,
size_t sizeOfItem,
size_t numItems,
bool text = false )
private

Definition at line 131 of file checksum_output_files.cpp.

133 {
134
135 int ret;
136 if (file_mode == "gz"){
137 ret = gzfread(pchar, sizeOfItem , numItems, gzstream);
138 if (ret < 0){
139 cout << "Error in reading file" << endl;
140 }
141 }else{
142 ret = fread(pchar, sizeOfItem, numItems, fstream);
143 if (ret < 0){
144 cout << "Error in reading file" << endl;
145
146 }
147 }
148 SWAP_BYTESINDATA(pchar, numItems, sizeOfItem);
149 if (text)
150 ((char *)pchar)[sizeOfItem * numItems] = '\0';
151 return ret;
152 }
void SWAP_BYTESINDATA(void *itemList, size_t itemCount, size_t sizeOfItem)

Field Documentation

◆ debug

int CheckSum_Output_Files::debug =0
private

Definition at line 63 of file checksum_output_files.h.

◆ file_mode

std::string CheckSum_Output_Files::file_mode
private

Definition at line 67 of file checksum_output_files.h.

◆ fstream

FILE* CheckSum_Output_Files::fstream
private

Definition at line 65 of file checksum_output_files.h.

◆ gzstream

gzFile CheckSum_Output_Files::gzstream
private

Definition at line 66 of file checksum_output_files.h.


The documentation for this class was generated from the following files: