home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / cad-tools / ciftomann.tar / cmd_dir / find_pg.c < prev    next >
C/C++ Source or Header  |  1993-03-29  |  2KB  |  77 lines

  1. #include <stdio.h>
  2. #include "pg_desc.h"
  3.  
  4. #define NUMBER_OF_PGS 4        /* number of entries in pgarray */
  5.  
  6. struct pg_struct pg_array[NUMBER_OF_PGS] = {
  7.    /*  stage     aperature  grid convert
  8.      min,  max,  min,  max, size,factor, name */
  9.     { 0, 600000, 10, 12000, 10,  25.4, "Gyrex" },
  10.     { 0, 100000,  4,  3000,  2,  100, "Metric_Mann3000" },
  11.     { -500000, 500000,  20, 9500, 1,  10, "PG3600" },
  12.     { 0, 131070,  2,  131070,  2, .3814697265, "Lebes" }
  13. };
  14.  
  15. struct pg_struct pg_desc;
  16.  
  17. init_pg()
  18. {
  19.     pg_desc = pg_array[0];
  20. }
  21.  
  22. find_pg_desc(name)
  23. char *name;
  24. {
  25.     int i;
  26.     int matched = -1;
  27.  
  28.     if (strcmp(name,"list") == 0) {
  29.         /* give them a list of the existing pattern generators */
  30.     print_pg_names();
  31.     exit(0);
  32.     }
  33.  
  34.     for (i = 0; i < NUMBER_OF_PGS; i++) {
  35.     
  36.     if ( match(pg_array[i].name, name) ) {
  37.  
  38.         if (matched != -1) {
  39.         fprintf(stderr, "%s is an ambiguous name for a pattern generator\n", name);
  40.         print_pg_names();
  41.         exit(1);
  42.         }
  43.  
  44.         matched = i;
  45.     }
  46.     }
  47.  
  48.     if (matched == -1) {
  49.     fprintf(stderr, "%s is not a known pattern generator\n", name);
  50.     print_pg_names();
  51.     exit(1);
  52.     }
  53.  
  54.     pg_desc = pg_array[matched];
  55. }
  56.  
  57. match(full, partial)
  58. char *full, *partial;
  59. {
  60.     while (*full != '\0' && *partial != '\0' && *full == *partial) {
  61.     full++;
  62.     partial++;
  63.     }
  64.  
  65.     return(*partial == '\0');
  66. }
  67.  
  68. print_pg_names()
  69. {
  70.     int i;
  71.  
  72.     fprintf(stderr, "Please use one of the following pattern generator types:\n");
  73.     for (i = 0; i < NUMBER_OF_PGS; i++) {
  74.     printf("%s\n", pg_array[i].name);
  75.     }
  76. }
  77.