int main(int argc, char *argv[])
{
  if (argc != 3)
    invocation_error(argv[0], "[output file] [size]");

  char *output_file = argv[1];
  size_t records = atol(argv[2]);
  size_t i, part_number, noun_count, adj_count;
  char *nouns[NOUN_MAX], noun_file_content[NOUN_BYTES];
  char *adjectives[ADJ_MAX], adj_file_content[ADJ_BYTES];
  int rc;
  Part p;

  Parts db = new_db(CHUNK_SIZE);

  noun_count = get_word_pointers(nouns, NOUN_FILE, noun_file_content, NOUN_BYTES);
  adj_count = get_word_pointers(adjectives, ADJ_FILE, adj_file_content, ADJ_BYTES);

  init_locale();
  srand((unsigned int) time(NULL));
  remove(output_file);

  for (part_number = 0, i = 0; i < records; i++) {
    part_number = jagged_sequence(part_number);
    p = set_part(part_number,
          random_part_name(nouns, noun_count, adjectives, adj_count),
          random_int(),
          random_int());
    printf("%9ld:  ", i + 1);
    print_part(p);
    if ((rc = insert_part(db, p))) {
      fprintf(stderr, "%s: %d  insert_part() failed: return code %d on iteration %ld\n",
          __FILE__, __LINE__, rc, i);
      destroy_db(db);
      exit(EXIT_FAILURE);
    }
    if (i % CHUNK_SIZE == 0) {
      if (flush_to_disk(output_file, db) != 0) {
        destroy_db(db);
        exit_error(argv[0], output_file);
      }
    }
  }

  if (flush_to_disk(output_file, db) != 0) {
    destroy_db(db);
    exit_error(argv[0], output_file);
  }
  destroy_db(db);

  return 0;
}
Beispiel #2
0
void load(Parts db)
{
  insert_part(db, set_part(212, "Named Part, unlabled", 1, 100));
  insert_part(db, set_part(12, "Flex Wing Grooming Mower", 19, 1200));
  insert_part(db, set_part(400, "Grommet", 18, 01));
  insert_part(db, set_part(1, "Fern Spore sorter, gross", 100, 12300));
  insert_part(db, set_part(1024, "Health Meter, fin.", 30, 434200));
  insert_part(db, set_part(1989776, "Tractor Beam cowl", 30, 9990101));
  insert_part(db, set_part(98, "magneto", 11, 101));
  insert_part(db, set_part(50, "manual key sort plucker", 11, 89));
  insert_part(db, set_part(40, "Parts List Catalog Index", 19, 0));
  insert_part(db, set_part(99, "funnel lip, unfinished", 1010, 4344));
  insert_part(db, set_part(512, "caterpiller feet, left", 1010, 99));
  insert_part(db, set_part(101, "Mental Health Services", 40, 100));
  insert_part(db, set_part(2, "Gas Ring, Municipal", 18, 214798900));
  insert_part(db, set_part(30, "System flipper", 80, 1301));
  insert_part(db, set_part(35, "Stabilizers, horiz,(pair)", 90, 3000000));
  insert_part(db, set_part(97, "Sink, heat, fur", 2147483647, 123220));
  insert_part(db, set_part(401, "Tension Mount", 10, 1039));
  insert_part(db, set_part(3, "Gas Ring, Occipital", 10, 8995));
  insert_part(db, set_part(33, "System Rotator", 8, 1301));
  insert_part(db, set_part(53, "Stabilizers, vert,(pair)", 90, 280000));
  insert_part(db, set_part(3497, "Sink, burbling", 47, 12720));
}
Beispiel #3
0
	url& set_path(std::string const& value) { return set_part(PATH, value); }
Beispiel #4
0
	url& set_port(std::string const& value) { return set_part(PORT, value); }
Beispiel #5
0
	url& set_host(std::string const& value) { return set_part(HOST, value); }
Beispiel #6
0
	url& set_userinfo(std::string const& value) { return set_part(USERINFO, value); }
Beispiel #7
0
	url& set_scheme(std::string const& value) { return set_part(SCHEME, value); }
Beispiel #8
0
	url& set_fragment(std::string const& value) { return set_part(FRAGMENT, value); }
Beispiel #9
0
	url& set_query(std::string const& value) { return set_part(QUERY, value); }
Beispiel #10
0
int main(int argc,char **argv)
{
  unsigned int outstrlen=0;
  int i,j,k,n;
  unsigned int offset,wdim=1,alldim;
  unsigned int has_future,*future,**useries,h;
  unsigned long count;
  long *segment;
  char *outstring,*infile,*wcol,*use_array;
  double **series,*sermin,*serinter,**dfuture;
  ptree *root;
  FILE *fout;

  if (scan_help(argc,argv))
    show_options(argv[0]);

  for (i=0;i<argc;i++) {
    outstrlen += strlen(argv[i]);
    outstrlen++;
  }
  check_alloc(outstring=(char*)malloc(sizeof(char)*(outstrlen+8)));
  sprintf(outstring,"#Prog: ");
  offset=7;
  for (i=0;i<argc;i++) {
    sprintf(outstring+offset,"%s ",argv[i]);
    offset += (strlen(argv[i])+1);
  }

  scan_options(argc,argv);
 
  if (!compdimset) 
    compdim=pars.DIM;
  else
    if (compdim > pars.DIM) {
      fprintf(stderr,"-C value larger -m Value.\n");
      exit(LANGEVIN_MAIN_C_TOO_LARGE);
    }

  infile=search_datafile(argc,argv,NULL,VERBOSITY);
  if (infile == NULL) {
    fprintf(stderr,"No input datafile found.\n");
    exit(LANGEVIN_MAIN_NO_INPUTFILE);
  }
  
  if (OUTFILE == NULL) {
    check_alloc(OUTFILE=(char*)calloc(strlen(infile)+5,(size_t)1));
    sprintf(OUTFILE,"%s.pru",infile);
  }
  OUTFILE=test_outfile(OUTFILE);

  if (COLUMN == NULL)
    series=(double**)get_multi_series(infile,&(pars.LENGTH),EXCLUDE,
				      &(pars.DIM),"",dimset,VERBOSITY);
  else
    series=(double**)get_multi_series(infile,&(pars.LENGTH),EXCLUDE,
				      &(pars.DIM),COLUMN,dimset,VERBOSITY);

  check_alloc(sermin=malloc(sizeof(double)*pars.DIM));
  check_alloc(serinter=malloc(sizeof(double)*pars.DIM));
  rescale_data(series,pars,sermin,serinter);

  alldim=pars.DIM;
  pars.DIM=compdim;

  check_alloc(useries=(unsigned int**)malloc(sizeof(int*)*pars.DIM));
  check_alloc(PART=(unsigned int*)malloc(sizeof(int)*pars.DIM));
  if (SPART == NULL)
    for (i=0;i<pars.DIM;i++)
      PART[i]=2;
  else
    set_part(PART,SPART,pars);

  for (i=0;i<pars.DIM;i++) {
    check_alloc(useries[i]=(unsigned int*)malloc(sizeof(int)*pars.LENGTH));
    for (j=0;j<pars.LENGTH;j++) {
      h=(unsigned int)((series[i][j]*(double)PART[i])/serinter[i]);
      useries[i][j]=((h<PART[i])?h:(PART[i]-1));
    }
  }

  check_alloc(future=(unsigned int*)malloc(sizeof(int)*pars.LENGTH));
  if (WHICHFUTURE>0) {
    check_alloc(wcol=(char*)calloc((size_t)10,(size_t)1));
    sprintf(wcol,"%u",WHICHFUTURE);
    dfuture=(double**)get_multi_series(infile,&(pars.LENGTH),EXCLUDE,
				       &wdim,wcol,1,0L);
    for (i=0;i<pars.LENGTH-1;i++) {
      future[i] = (dfuture[0][i]>0.0);
    }
    future[pars.LENGTH-1]=1;
    free(dfuture);
  }
  else {
    for (i=0;i<pars.LENGTH;i++)
      future[i]=1;
  }
  root=make_ptree(PART[0]);

  count=0;
  check_alloc(segment=(long*)malloc(sizeof(long)*pars.LENGTH));
  for (i=0;i<pars.LENGTH;i += ODEPTH) {
    has_future=1;
    for (j=0;j<ODEPTH;j++)
      has_future &= future[i+j];
    if (has_future) {
      fill_tree(root,useries,pars,i,0,DEPTH,PART);
    }
    segment[count++]=i;
  }

  if (scrambleset)
    lscramble(segment,count);

  check_alloc(use_array=(char*)malloc(sizeof(char)*pars.LENGTH));
  for (i=0;i<count;i++) {
    n=segment[i];
    has_future=1;
    for (j=0;j<ODEPTH;j++)
      has_future &= future[n+j];
    if (has_future) {
      h=read_tree(root,useries,pars,n,0,DEPTH);
      if (h <= MAXOUT)
	use_array[i]=1;
      else 
	use_array[i]=0;
    }
    else 
      use_array[i]=2;
  }
  pars.DIM=alldim;

  fout=fopen(OUTFILE,"w");
  fprintf(fout,"%s\n",outstring);
  fprintf(fout,"#Content: ");
  for (i=0;i<pars.DIM;i++)
    fprintf(fout,"x%d ",i+1);
  fprintf(fout,"future time_index\n");
  fflush(fout);

  for (i=0;i<count;i++) {
    n=segment[i];
    if (use_array[i] == 1) {
      for (j=0;j<(ODEPTH-1);j++) {
	for (k=0;k<pars.DIM;k++)
	  fprintf(fout,"%f ",series[k][n+j]+sermin[k]);
	fprintf(fout,"1 %u\n",n+j);
      }
      for (k=0;k<pars.DIM;k++)
	fprintf(fout,"%f ",series[k][n+ODEPTH-1]+sermin[k]);
      if (i<(count-1)) {
	if (segment[i+1] == (n+ODEPTH) && use_array[i+1])
	  fprintf(fout,"1 %u\n",n+ODEPTH-1);
	else 
	  fprintf(fout,"0 %u\n",n+ODEPTH-1);
      }
      else 
	fprintf(fout,"0 %u\n",n+ODEPTH-1);
    }
  }

  fclose(fout);
}