view ueda/uschem-netlist/dowork.c @ 31:61272ee5aadc

unet-bind: implemented -a option for specifying wanted attributes
author Space Falcon <falcon@ivan.Harhan.ORG>
date Sat, 08 Aug 2015 21:44:10 +0000
parents cd92449fdb51
children
line wrap: on
line source

#include <sys/types.h>
#include <stdio.h>
#include "netlist.h"
#include "../libuschem/schemstruct.h"

extern struct nlcomp *mclcomp_to_nlcomp();
extern struct pinconn *alloc_pinconn();
extern char *get_compinst_attr();
extern char *pinname_to_pinnumber();

extern struct schem *curschem;
extern int global_errflag;

extern struct net noconnect_pseudo_net;

do_connect(net, compinst, soughtpin, bynum, lineno)
	struct net *net;
	struct schemobj *compinst;
	char *soughtpin;
	int bynum, lineno;
{
	register struct component *comp;
	register char *pinnum;
	char *slot;
	register struct pinconn *pc;

	comp = compinst->compobj_mclcomp;
	if (bynum)
		pinnum = soughtpin;
	else {
		slot = get_compinst_attr(compinst, "slot");
		pinnum = pinname_to_pinnumber(comp, soughtpin, slot);
		if (!pinnum) {
			/* error msg already printed */
			global_errflag++;
			return;
		}
	}
	pc = alloc_pinconn();
	pc->comp = mclcomp_to_nlcomp(comp);
	pc->pinnum = pinnum;
	pc->net = net;
	pc->origin_file = curschem->orig_filename;
	pc->origin_line = lineno;
	if (record_pin_connection(pc))
		free(pc);
}

do_noconnect(compinst, soughtpin, bynum, lineno)
	struct schemobj *compinst;
	char *soughtpin;
	int bynum, lineno;
{
	do_connect(&noconnect_pseudo_net, compinst, soughtpin, bynum, lineno);
}