/* Test for reading very very large cif files*/
#include "CifFileObj.h"
#include <iostream.h>
#include <time.h>

int main(int argc, char *argv[]) {
  CifFileObj * fobjR2 = NULL;
  time_t start,end;
  char *iFile=NULL, *oFile=NULL;
  int i;
  char *pname=NULL;
  char *diags=NULL;
  pname = argv[0];



  if (argc < 4) {
    cerr << pname << ":  usage = -f <inputfile> -o <outputfile> " << endl;
    exit(1);
  }

   time(&start);
  for (i=1; i < argc; i++) {
    if ( argv[i][0] == '-' ) {
      if (strcmp(argv[i],"-f") == 0 ) {
	i++;
	iFile = (char *) calloc(strlen(argv[i]) + 1, sizeof(char));
	strcpy(iFile,argv[i]);          
      }	else if (strcmp(argv[i],"-o") == 0 ) {
	i++;
	oFile = (char *) calloc(strlen(argv[i]) + 1, sizeof(char));
	strcpy(oFile,argv[i]);          
      } else {
	cerr << pname << ":  usage = -f <inputfile> -o <outputfile> " << endl;
	exit(1);
      }
    } else {
      cerr << pname << ":  usage = -f <inputfile> -o <outputfile> " << endl;
      exit(1);
    }
  }

  fobjR2 = new CifFileObj(oFile, PERM_WRITE_MODE, 80, "?", 0);
  fobjR2->Read(iFile,diags);


  time(&end);
  cout<<"File is READ in "<<difftime(end,start)<<" second(s)"<<endl;

  time(&start);
  fobjR2->CloseFile(1);
  
  time(&end);
  cout<<"Binary file is created in "<<difftime(end,start)<<" second(s)"<<endl;
  if (fobjR2) delete fobjR2;
  exit(0);
}
