FreeCalypso > hg > ueda-linux
view ueda/libuschem/pinref.c @ 20:dda8e455c863
unet-bind works to the point of reporting unbound instances
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Sun, 02 Aug 2015 03:23:44 +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); }