FreeCalypso > hg > ueda-linux
annotate ueda/libuschem/pinref.c @ 154:2328205328a9 default tip
m4-fp: WR-FPC 1mm pitch FFC/FPC connectors
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Tue, 25 Oct 2022 07:36:09 +0000 | 
| parents | cd92449fdb51 | 
| children | 
| rev | line source | 
|---|---|
| 0 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 1 /* | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 2 * pin name reference parsing | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 3 */ | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 4 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 5 #include <sys/types.h> | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 6 #include <stdio.h> | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 7 #include <ctype.h> | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 8 #include "schemstruct.h" | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 9 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 10 extern struct schemobj *find_component_instance(); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 11 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 12 parse_pin_nameref(schem, lineno, nameref, compp, soughtpin, bynum) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 13 struct schem *schem; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 14 int lineno; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 15 char *nameref; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 16 struct schemobj **compp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 17 char **soughtpin; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 18 int *bynum; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 19 { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 20 register char *cp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 21 char chsave; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 22 register struct schemobj *comp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 23 | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 24 cp = nameref; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 25 if (!isalnum(*cp)) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 26 inv: fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 27 "%s: line %d: \"%s\" is not a valid pin name reference\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 28 schem->orig_filename, lineno, nameref); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 29 return(-1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 30 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 31 while (isalnum(*cp)) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 32 cp++; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 33 chsave = *cp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 34 switch (*cp) { | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 35 case '.': | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 36 *bynum = 0; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 37 break; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 38 case '-': | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 39 *bynum = 1; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 40 break; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 41 default: | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 42 goto inv; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 43 } | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 44 *cp = '\0'; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 45 comp = find_component_instance(schem, nameref); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 46 if (!comp) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 47 fprintf(stderr, | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 48 "%s: line %d: component instance %s not found\n", | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 49 schem->orig_filename, lineno, nameref); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 50 *cp++ = chsave; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 51 *compp = comp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 52 if (!isgraph(*cp)) | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 53 goto inv; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 54 *soughtpin = cp; | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 55 return(comp ? 0 : -1); | 
| 
cd92449fdb51
initial import of ueda and ifctf-part-lib from ifctfvax CVS
 Space Falcon <falcon@ivan.Harhan.ORG> parents: diff
changeset | 56 } | 
