FreeCalypso > hg > ueda-linux
view ueda/libuschem/pinref.c @ 148:64d4abf63e1e
netdiff: donl-pindiff factored out of donl-netmatch
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 15 Nov 2020 04:11:01 +0000 |
parents | cd92449fdb51 |
children |
line wrap: on
line source
/* * pin name reference parsing */ #include <sys/types.h> #include <stdio.h> #include <ctype.h> #include "schemstruct.h" extern struct schemobj *find_component_instance(); parse_pin_nameref(schem, lineno, nameref, compp, soughtpin, bynum) struct schem *schem; int lineno; char *nameref; struct schemobj **compp; char **soughtpin; int *bynum; { register char *cp; char chsave; register struct schemobj *comp; cp = nameref; if (!isalnum(*cp)) { inv: fprintf(stderr, "%s: line %d: \"%s\" is not a valid pin name reference\n", schem->orig_filename, lineno, nameref); return(-1); } while (isalnum(*cp)) cp++; chsave = *cp; switch (*cp) { case '.': *bynum = 0; break; case '-': *bynum = 1; break; default: goto inv; } *cp = '\0'; comp = find_component_instance(schem, nameref); if (!comp) fprintf(stderr, "%s: line %d: component instance %s not found\n", schem->orig_filename, lineno, nameref); *cp++ = chsave; *compp = comp; if (!isgraph(*cp)) goto inv; *soughtpin = cp; return(comp ? 0 : -1); }