use short data type for small integer data: rot, flip, dash, bus etc...

This commit is contained in:
Stefan Frederik 2020-12-05 03:16:01 +01:00
parent 4e08f347da
commit 780b994aeb
18 changed files with 167 additions and 164 deletions

View File

@ -725,7 +725,7 @@ void attach_labels_to_inst() /* offloaded from callback.c 20171005 */
xSymbol *symbol; xSymbol *symbol;
int npin, i, j; int npin, i, j;
double x0,y0, pinx0, piny0; double x0,y0, pinx0, piny0;
int flip, rot, rot1 ; short flip, rot, rot1 ;
xRect *rct; xRect *rct;
char *labname=NULL; char *labname=NULL;
char *prop=NULL; /* 20161122 overflow safe */ char *prop=NULL; /* 20161122 overflow safe */
@ -930,7 +930,7 @@ void place_net_label(int type)
/* first_call: set to 1 on first invocation for a given set of symbols (same prefix) */ /* first_call: set to 1 on first invocation for a given set of symbols (same prefix) */
/* set to 0 on next calls, this speeds up searching for unique names in prop string */ /* set to 0 on next calls, this speeds up searching for unique names in prop string */
/* returns 1 if symbol successfully placed, 0 otherwise */ /* returns 1 if symbol successfully placed, 0 otherwise */
int place_symbol(int pos, const char *symbol_name, double x, double y, int rot, int flip, int place_symbol(int pos, const char *symbol_name, double x, double y, short rot, short flip,
const char *inst_props, int draw_sym, int first_call) const char *inst_props, int draw_sym, int first_call)
/* if symbol_name is a valid string load specified cell and */ /* if symbol_name is a valid string load specified cell and */
/* use the given params, otherwise query user */ /* use the given params, otherwise query user */
@ -2143,7 +2143,7 @@ void new_polygon(int what)
#ifdef HAS_CAIRO #ifdef HAS_CAIRO
int text_bbox(const char *str, double xscale, double yscale, int text_bbox(const char *str, double xscale, double yscale,
int rot, int flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1, short rot, short flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1,
double *rx2, double *ry2) double *rx2, double *ry2)
{ {
int c=0; int c=0;
@ -2226,11 +2226,11 @@ int text_bbox(const char *str, double xscale, double yscale,
return 1; return 1;
} }
int text_bbox_nocairo(const char * str,double xscale, double yscale, int text_bbox_nocairo(const char * str,double xscale, double yscale,
int rot, int flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1, short rot, short flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1,
double *rx2, double *ry2) double *rx2, double *ry2)
#else #else
int text_bbox(const char * str,double xscale, double yscale, int text_bbox(const char * str,double xscale, double yscale,
int rot, int flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1, short rot, short flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1,
double *rx2, double *ry2) double *rx2, double *ry2)
#endif #endif
{ {

View File

@ -377,7 +377,8 @@ void trim_wires(void)
void break_wires_at_pins(void) void break_wires_at_pins(void)
{ {
int k, i, j, r, rects, rot, flip, sqx, sqy; int k, i, j, r, rects, sqx, sqy;
short rot, flip;
struct wireentry *wptr; struct wireentry *wptr;
xRect *rct; xRect *rct;
double x0, y0, rx1, ry1; double x0, y0, rx1, ry1;

View File

@ -266,17 +266,15 @@ int set_text_custom_font(xText *txt)
#ifdef HAS_CAIRO #ifdef HAS_CAIRO
static void cairo_draw_string_line(cairo_t *c_ctx, char *s, static void cairo_draw_string_line(cairo_t *c_ctx, char *s,
double x, double y, int rot, int flip, double x, double y, short rot, short flip,
int lineno, double fontheight, double fontascent, double fontdescent, int llength) int lineno, double fontheight, double fontascent, double fontdescent, int llength)
{ {
double ix, iy; double ix, iy;
int rot1; short rot1;
int line_delta; int line_delta;
int line_offset; int line_offset;
double lines; double lines;
double vc; /* 20171121 vert correct */ double vc; /* 20171121 vert correct */
/*int rx1, ry1, rx2, ry2, save_rot, save_flip; */
/* GC gcclear; */
if(s==NULL) return; if(s==NULL) return;
if(llength==0) return; if(llength==0) return;
@ -311,7 +309,7 @@ static void cairo_draw_string_line(cairo_t *c_ctx, char *s,
} }
/* CAIRO version */ /* CAIRO version */
void draw_string(int layer, int what, const char *str, int rot, int flip, int hcenter, int vcenter, void draw_string(int layer, int what, const char *str, short rot, short flip, int hcenter, int vcenter,
double x, double y, double xscale, double yscale) double x, double y, double xscale, double yscale)
{ {
char *tt, *ss, *sss=NULL; char *tt, *ss, *sss=NULL;
@ -388,7 +386,7 @@ void draw_string(int layer, int what, const char *str, int rot, int flip, int hc
#else /* !HAS_CAIRO */ #else /* !HAS_CAIRO */
/* no CAIRO version */ /* no CAIRO version */
void draw_string(int layer, int what, const char *str, int rot, int flip, int hcenter, int vcenter, void draw_string(int layer, int what, const char *str, short rot, short flip, int hcenter, int vcenter,
double x1,double y1, double xscale, double yscale) double x1,double y1, double xscale, double yscale)
{ {
double a=0.0,yy; double a=0.0,yy;
@ -449,7 +447,7 @@ void draw_string(int layer, int what, const char *str, int rot, int flip, int hc
#endif /* HAS_CAIRO */ #endif /* HAS_CAIRO */
void draw_temp_string(GC gctext, int what, const char *str, int rot, int flip, int hcenter, int vcenter, void draw_temp_string(GC gctext, int what, const char *str, short rot, short flip, int hcenter, int vcenter,
double x1,double y1, double xscale, double yscale) double x1,double y1, double xscale, double yscale)
{ {
if(!has_x) return; if(!has_x) return;
@ -458,13 +456,13 @@ void draw_temp_string(GC gctext, int what, const char *str, int rot, int flip, i
drawtemprect(gctext,what, textx1,texty1,textx2,texty2); drawtemprect(gctext,what, textx1,texty1,textx2,texty2);
} }
void draw_symbol(int what,int c, int n,int layer,int tmp_flip, int rot, void draw_symbol(int what,int c, int n,int layer,short tmp_flip, short rot,
double xoffset, double yoffset) double xoffset, double yoffset)
/* draws current layer only, should be called within */ /* draws current layer only, should be called within */
{ /* a "for(i=0;i<cadlayers;i++)" loop */ { /* a "for(i=0;i<cadlayers;i++)" loop */
register int j; register int j;
register double x0,y0,x1,y1,x2,y2; register double x0,y0,x1,y1,x2,y2;
int flip; short flip;
int hide = 0; int hide = 0;
xLine line; xLine line;
xRect box; xRect box;
@ -628,13 +626,13 @@ void draw_symbol(int what,int c, int n,int layer,int tmp_flip, int rot,
} }
} }
void draw_temp_symbol(int what, GC gc, int n,int layer,int tmp_flip, int rot, void draw_temp_symbol(int what, GC gc, int n,int layer,short tmp_flip, short rot,
double xoffset, double yoffset) double xoffset, double yoffset)
/* draws current layer only, should be called within */ /* draws current layer only, should be called within */
{ /* a "for(i=0;i<cadlayers;i++)" loop */ { /* a "for(i=0;i<cadlayers;i++)" loop */
int j; int j;
double x0,y0,x1,y1,x2,y2; double x0,y0,x1,y1,x2,y2;
int flip; short flip;
xLine line; xLine line;
xPoly polygon; xPoly polygon;
xRect box; xRect box;

View File

@ -23,7 +23,7 @@
#include <stdarg.h> #include <stdarg.h>
#include "xschem.h" #include "xschem.h"
static int rot = 0, flip = 0; static short rot = 0, flip = 0;
char *my_strtok_r(char *str, const char *delim, char **saveptr) char *my_strtok_r(char *str, const char *delim, char **saveptr)
{ {

View File

@ -113,7 +113,7 @@ void find_closest_net_or_symbol_pin(double mx,double my, double *x, double *y)
int i, j, no_of_pin_rects; int i, j, no_of_pin_rects;
double x0, x1, x2, y0, y1, y2, xx, yy, dist, min_dist_x=0, min_dist_y=0; double x0, x1, x2, y0, y1, y2, xx, yy, dist, min_dist_x=0, min_dist_y=0;
xRect box; xRect box;
int rot, flip; short rot, flip;
char *type=NULL; char *type=NULL;
distance = DBL_MAX; distance = DBL_MAX;
@ -271,7 +271,7 @@ void find_closest_element(double mx,double my)
void find_closest_text(double mx,double my) void find_closest_text(double mx,double my)
{ {
int rot,flip; short rot,flip;
double xx1,xx2,yy1,yy2; double xx1,xx2,yy1,yy2;
int i,r=-1; int i,r=-1;
double threshold = CADWIREMINDIST * CADWIREMINDIST * cadgrid * cadgrid / 400; double threshold = CADWIREMINDIST * CADWIREMINDIST * cadgrid * cadgrid / 400;

View File

@ -22,12 +22,12 @@
#include "xschem.h" #include "xschem.h"
static double rx1, rx2, ry1, ry2; static double rx1, rx2, ry1, ry2;
static int move_rot = 0; static short move_rot = 0;
static int move_flip = 0; static short move_flip = 0;
static double x1=0.0, y_1=0.0, x2=0.0, y_2=0.0, deltax = 0.0, deltay = 0.0; static double x1=0.0, y_1=0.0, x2=0.0, y_2=0.0, deltax = 0.0, deltay = 0.0;
/* static int i,c,n,k; */ /* static int i,c,n,k; */
static int lastsel; static int lastsel;
static int rotatelocal=0; static short rotatelocal=0;
void rebuild_selected_array() /* can be used only if new selected set is lower */ void rebuild_selected_array() /* can be used only if new selected set is lower */
@ -169,9 +169,10 @@ void check_collapsing_objects()
} }
} }
void update_symbol_bboxes(int rot, int flip) void update_symbol_bboxes(short rot, short flip)
{ {
int i, n, save_flip, save_rot; int i, n;
short save_flip, save_rot;
for(i=0;i<lastsel;i++) for(i=0;i<lastsel;i++)
{ {

View File

@ -248,7 +248,8 @@ void hash_inst_pin(int what, int i, int j)
xRect *rct; xRect *rct;
char *prop_ptr; char *prop_ptr;
double x0, y0, rx1, ry1; double x0, y0, rx1, ry1;
int rot, flip, sqx, sqy; short rot, flip;
int sqx, sqy;
int rects; int rects;
rects=(xctx->inst[i].ptr+ xctx->sym)->rects[PINLAYER] ; rects=(xctx->inst[i].ptr+ xctx->sym)->rects[PINLAYER] ;
@ -624,8 +625,8 @@ void prepare_netlist_structs(int for_netlist)
char tmp_str[30]; /* overflow safe */ char tmp_str[30]; /* overflow safe */
char nn[PATH_MAX+30]; char nn[PATH_MAX+30];
double x0, y0; double x0, y0;
int rot = 0; short rot = 0;
int flip = 0; short flip = 0;
int sqx, sqy; int sqx, sqy;
int port; int port;
int touches=0; int touches=0;
@ -1062,6 +1063,7 @@ int sym_vs_sch_pins()
double tmpd; double tmpd;
FILE *fd; FILE *fd;
int tmpi; int tmpi;
short tmps;
int endfile; int endfile;
char tag[1]; char tag[1];
char filename[PATH_MAX]; char filename[PATH_MAX];
@ -1131,7 +1133,7 @@ int sym_vs_sch_pins()
break; break;
case 'T': case 'T':
load_ascii_string(&tmp,fd); load_ascii_string(&tmp,fd);
if(fscanf(fd, "%lf %lf %d %d %lf %lf ", &tmpd, &tmpd, &tmpi, &tmpi, &tmpd, &tmpd) < 6 ) { if(fscanf(fd, "%lf %lf %hd %hd %lf %lf ", &tmpd, &tmpd, &tmps, &tmps, &tmpd, &tmpd) < 6 ) {
fprintf(errfp,"WARNING: missing fields for TEXT object, ignoring\n"); fprintf(errfp,"WARNING: missing fields for TEXT object, ignoring\n");
read_line(fd, 0); read_line(fd, 0);
break; break;
@ -1147,7 +1149,7 @@ int sym_vs_sch_pins()
my_strncpy(name, add_ext(name, ".sym"), S(name)); my_strncpy(name, add_ext(name, ".sym"), S(name));
} }
if(fscanf(fd, "%lf %lf %d %d", &tmpd, &tmpd, &tmpi, &tmpi) < 4) { if(fscanf(fd, "%lf %lf %hd %hd", &tmpd, &tmpd, &tmps, &tmps) < 4) {
fprintf(errfp,"sym_vs_sch_pins() WARNING: missing fields for INST object, filename=%s\n", fprintf(errfp,"sym_vs_sch_pins() WARNING: missing fields for INST object, filename=%s\n",
filename); filename);
read_line(fd, 0); read_line(fd, 0);

View File

@ -34,7 +34,7 @@ void merge_text(FILE *fd)
i=xctx->texts; i=xctx->texts;
xctx->text[i].txt_ptr=NULL; xctx->text[i].txt_ptr=NULL;
load_ascii_string(&xctx->text[i].txt_ptr,fd); load_ascii_string(&xctx->text[i].txt_ptr,fd);
fscanf(fd, "%lf %lf %d %d %lf %lf ", fscanf(fd, "%lf %lf %hd %hd %lf %lf ",
&xctx->text[i].x0, &xctx->text[i].y0, &xctx->text[i].rot, &xctx->text[i].x0, &xctx->text[i].y0, &xctx->text[i].rot,
&xctx->text[i].flip, &xctx->text[i].xscale, &xctx->text[i].flip, &xctx->text[i].xscale,
&xctx->text[i].yscale); &xctx->text[i].yscale);
@ -206,7 +206,7 @@ void merge_inst(int k,FILE *fd)
ptr=xctx->inst; ptr=xctx->inst;
ptr[i].name=NULL; ptr[i].name=NULL;
load_ascii_string(&ptr[i].name,fd); load_ascii_string(&ptr[i].name,fd);
if(fscanf(fd, "%lf %lf %d %d",&ptr[i].x0, &ptr[i].y0,&ptr[i].rot, &ptr[i].flip) < 4) { if(fscanf(fd, "%lf %lf %hd %hd",&ptr[i].x0, &ptr[i].y0,&ptr[i].rot, &ptr[i].flip) < 4) {
fprintf(errfp,"WARNING: missing fields for INSTANCE object, ignoring.\n"); fprintf(errfp,"WARNING: missing fields for INSTANCE object, ignoring.\n");
read_line(fd, 0); read_line(fd, 0);
return; return;

View File

@ -201,7 +201,7 @@ static void ps_drawline(int gc, double linex1,double liney1,double linex2,double
} }
static void ps_draw_string(int gctext, const char *str, static void ps_draw_string(int gctext, const char *str,
int rot, int flip, int hcenter, int vcenter, short rot, short flip, int hcenter, int vcenter,
double x1,double y1, double x1,double y1,
double xscale, double yscale) double xscale, double yscale)
@ -283,13 +283,13 @@ static void ps_drawgrid()
static void ps_draw_symbol(int n,int layer,int tmp_flip, int rot, static void ps_draw_symbol(int n,int layer, short tmp_flip, short rot, double xoffset, double yoffset)
double xoffset, double yoffset)
/* draws current layer only, should be called within */ /* draws current layer only, should be called within */
{ /* a "for(i=0;i<cadlayers;i++)" loop */ { /* a "for(i=0;i<cadlayers;i++)" loop */
int j; int j;
double x0,y0,x1,y1,x2,y2; double x0,y0,x1,y1,x2,y2;
int flip, textlayer; short flip;
int textlayer;
xLine line; xLine line;
xRect box; xRect box;
xText text; xText text;

View File

@ -241,7 +241,7 @@ void save_embedded_symbol(xSymbol *s, FILE *fd)
ptr = s->text; ptr = s->text;
fprintf(fd, "T "); fprintf(fd, "T ");
save_ascii_string(ptr[i].txt_ptr,fd); save_ascii_string(ptr[i].txt_ptr,fd);
fprintf(fd, " %.16g %.16g %d %d %.16g %.16g ", fprintf(fd, " %.16g %.16g %hd %hd %.16g %.16g ",
ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip, ptr[i].xscale, ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip, ptr[i].xscale,
ptr[i].yscale); ptr[i].yscale);
save_ascii_string(ptr[i].prop_ptr,fd); save_ascii_string(ptr[i].prop_ptr,fd);
@ -282,7 +282,7 @@ void save_inst(FILE *fd)
save_ascii_string(rel_sym_path(ptr[i].name), fd); save_ascii_string(rel_sym_path(ptr[i].name), fd);
} }
my_free(882, &tmp); my_free(882, &tmp);
fprintf(fd, " %.16g %.16g %d %d ",ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip ); fprintf(fd, " %.16g %.16g %hd %hd ",ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip );
save_ascii_string(ptr[i].prop_ptr,fd); save_ascii_string(ptr[i].prop_ptr,fd);
fputc('\n' ,fd); fputc('\n' ,fd);
if( !strcmp(get_tok_value(ptr[i].prop_ptr, "embed", 0), "true") ) { if( !strcmp(get_tok_value(ptr[i].prop_ptr, "embed", 0), "true") ) {
@ -319,7 +319,7 @@ void save_text(FILE *fd)
{ {
fprintf(fd, "T "); fprintf(fd, "T ");
save_ascii_string(ptr[i].txt_ptr,fd); save_ascii_string(ptr[i].txt_ptr,fd);
fprintf(fd, " %.16g %.16g %d %d %.16g %.16g ", fprintf(fd, " %.16g %.16g %hd %hd %.16g %.16g ",
ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip, ptr[i].xscale, ptr[i].x0, ptr[i].y0, ptr[i].rot, ptr[i].flip, ptr[i].xscale,
ptr[i].yscale); ptr[i].yscale);
save_ascii_string(ptr[i].prop_ptr,fd); save_ascii_string(ptr[i].prop_ptr,fd);
@ -460,7 +460,7 @@ static void load_text(FILE *fd)
i=xctx->texts; i=xctx->texts;
xctx->text[i].txt_ptr=NULL; xctx->text[i].txt_ptr=NULL;
load_ascii_string(&xctx->text[i].txt_ptr,fd); load_ascii_string(&xctx->text[i].txt_ptr,fd);
if(fscanf(fd, "%lf %lf %d %d %lf %lf ", if(fscanf(fd, "%lf %lf %hd %hd %lf %lf ",
&xctx->text[i].x0, &xctx->text[i].y0, &xctx->text[i].rot, &xctx->text[i].x0, &xctx->text[i].y0, &xctx->text[i].rot,
&xctx->text[i].flip, &xctx->text[i].xscale, &xctx->text[i].flip, &xctx->text[i].xscale,
&xctx->text[i].yscale)<6) { &xctx->text[i].yscale)<6) {
@ -539,7 +539,7 @@ static void load_inst(int k, FILE *fd)
my_strdup2(56, &xctx->inst[i].name, name); my_strdup2(56, &xctx->inst[i].name, name);
dbg(1, "load_inst(): 2: name=%s\n", name); dbg(1, "load_inst(): 2: name=%s\n", name);
if(fscanf(fd, "%lf %lf %d %d", &xctx->inst[i].x0, &xctx->inst[i].y0, if(fscanf(fd, "%lf %lf %hd %hd", &xctx->inst[i].x0, &xctx->inst[i].y0,
&xctx->inst[i].rot, &xctx->inst[i].flip) < 4) { &xctx->inst[i].rot, &xctx->inst[i].flip) < 4) {
fprintf(errfp,"WARNING: missing fields for INSTANCE object, ignoring.\n"); fprintf(errfp,"WARNING: missing fields for INSTANCE object, ignoring.\n");
read_line(fd, 0); read_line(fd, 0);
@ -1511,7 +1511,7 @@ int load_sym_def(const char *name, FILE *embed_fd)
static int recursion_counter=0; static int recursion_counter=0;
struct Lcc *lcc; /* size = level */ struct Lcc *lcc; /* size = level */
FILE *fd_tmp; FILE *fd_tmp;
int rot,flip; short rot,flip;
double angle; double angle;
double rx1,ry1,rx2,ry2; double rx1,ry1,rx2,ry2;
int incremented_level=0; int incremented_level=0;
@ -1523,7 +1523,7 @@ int load_sym_def(const char *name, FILE *embed_fd)
char *aux_ptr=NULL; char *aux_ptr=NULL;
char *prop_ptr=NULL, *symtype=NULL; char *prop_ptr=NULL, *symtype=NULL;
double inst_x0, inst_y0; double inst_x0, inst_y0;
int inst_rot, inst_flip; short inst_rot, inst_flip;
char *symname = NULL; char *symname = NULL;
char tag[1]; char tag[1];
int *lastl = my_malloc(333, cadlayers * sizeof(lastl)); int *lastl = my_malloc(333, cadlayers * sizeof(lastl));
@ -1811,7 +1811,7 @@ int load_sym_def(const char *name, FILE *embed_fd)
tt[i].txt_ptr=NULL; tt[i].txt_ptr=NULL;
tt[i].font=NULL; tt[i].font=NULL;
load_ascii_string(&tt[i].txt_ptr, lcc[level].fd); load_ascii_string(&tt[i].txt_ptr, lcc[level].fd);
fscanf(lcc[level].fd, "%lf %lf %d %d %lf %lf ",&tt[i].x0, &tt[i].y0, &tt[i].rot, fscanf(lcc[level].fd, "%lf %lf %hd %hd %lf %lf ",&tt[i].x0, &tt[i].y0, &tt[i].rot,
&tt[i].flip, &tt[i].xscale, &tt[i].yscale); &tt[i].flip, &tt[i].xscale, &tt[i].yscale);
if (level>0) { if (level>0) {
const char* tmp = translate2(lcc, level, tt[i].txt_ptr); const char* tmp = translate2(lcc, level, tt[i].txt_ptr);
@ -1878,7 +1878,7 @@ int load_sym_def(const char *name, FILE *embed_fd)
case 'C': case 'C':
load_ascii_string(&symname, lcc[level].fd); load_ascii_string(&symname, lcc[level].fd);
dbg(1, "l_s_d(): C line: symname=%s\n", symname); dbg(1, "l_s_d(): C line: symname=%s\n", symname);
if (fscanf(lcc[level].fd, "%lf %lf %d %d", &inst_x0, &inst_y0, &inst_rot, &inst_flip) < 4) { if (fscanf(lcc[level].fd, "%lf %lf %hd %hd", &inst_x0, &inst_y0, &inst_rot, &inst_flip) < 4) {
fprintf(errfp, "WARNING: missing fields for COMPONENT object, ignoring\n"); fprintf(errfp, "WARNING: missing fields for COMPONENT object, ignoring\n");
read_line(lcc[level].fd, 0); read_line(lcc[level].fd, 0);
continue; continue;
@ -1968,7 +1968,7 @@ int load_sym_def(const char *name, FILE *embed_fd)
lcc[level].flip = inst_flip; lcc[level].flip = inst_flip;
/* calculate LCC sub-schematic x0, y0, rotation and flip */ /* calculate LCC sub-schematic x0, y0, rotation and flip */
if (level > 1) { if (level > 1) {
int rot, flip; short rot, flip;
static int map[4]={0,3,2,1}; static int map[4]={0,3,2,1};
flip = lcc[level-1].flip; flip = lcc[level-1].flip;
@ -2347,7 +2347,7 @@ void save_selection(int what)
case xTEXT: case xTEXT:
fprintf(fd, "T "); fprintf(fd, "T ");
save_ascii_string(xctx->text[n].txt_ptr,fd); save_ascii_string(xctx->text[n].txt_ptr,fd);
fprintf(fd, " %.16g %.16g %d %d %.16g %.16g ", fprintf(fd, " %.16g %.16g %hd %hd %.16g %.16g ",
xctx->text[n].x0, xctx->text[n].y0, xctx->text[n].rot, xctx->text[n].flip, xctx->text[n].x0, xctx->text[n].y0, xctx->text[n].rot, xctx->text[n].flip,
xctx->text[n].xscale, xctx->text[n].yscale); xctx->text[n].xscale, xctx->text[n].yscale);
save_ascii_string(xctx->text[n].prop_ptr,fd); save_ascii_string(xctx->text[n].prop_ptr,fd);
@ -2395,7 +2395,7 @@ void save_selection(int what)
case ELEMENT: case ELEMENT:
fprintf(fd, "C "); fprintf(fd, "C ");
save_ascii_string(xctx->inst[n].name,fd); save_ascii_string(xctx->inst[n].name,fd);
fprintf(fd, " %.16g %.16g %d %d ",xctx->inst[n].x0, xctx->inst[n].y0, fprintf(fd, " %.16g %.16g %hd %hd ",xctx->inst[n].x0, xctx->inst[n].y0,
xctx->inst[n].rot, xctx->inst[n].flip ); xctx->inst[n].rot, xctx->inst[n].flip );
save_ascii_string(xctx->inst[n].prop_ptr,fd); save_ascii_string(xctx->inst[n].prop_ptr,fd);
fputc('\n' ,fd); fputc('\n' ,fd);

View File

@ -1047,8 +1047,8 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
else if(!strcmp(argv[1],"instance_net")) else if(!strcmp(argv[1],"instance_net"))
{ {
/* xschem instance_net inst pin */ /* xschem instance_net inst pin */
int no_of_pins, i, p, mult; int no_of_pins, i, p, multip;
const char *str_ptr=NULL; const char *str_ptr=NULL;
if( argc <4) { if( argc <4) {
@ -1063,7 +1063,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
no_of_pins= (xctx->inst[i].ptr+ xctx->sym)->rects[PINLAYER]; no_of_pins= (xctx->inst[i].ptr+ xctx->sym)->rects[PINLAYER];
for(p=0;p<no_of_pins;p++) { for(p=0;p<no_of_pins;p++) {
if(!strcmp( get_tok_value((xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][p].prop_ptr,"name",0), argv[3])) { if(!strcmp( get_tok_value((xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][p].prop_ptr,"name",0), argv[3])) {
str_ptr = net_name(i,p,&mult, 0, 1); str_ptr = net_name(i,p,&multip, 0, 1);
break; break;
} }
} /* /20171029 */ } /* /20171029 */
@ -1117,7 +1117,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
* returns pin_name x y */ * returns pin_name x y */
xSymbol *symbol; xSymbol *symbol;
xRect *rct; xRect *rct;
int flip, rot; short flip, rot;
double x0,y0, pinx0, piny0; double x0,y0, pinx0, piny0;
char num[60]; char num[60];
int p, i, no_of_pins, slot; int p, i, no_of_pins, slot;
@ -1213,7 +1213,7 @@ int xschem(ClientData clientdata, Tcl_Interp *interp, int argc, const char * arg
/* xschem instances_to_net PLUS */ /* xschem instances_to_net PLUS */
xSymbol *symbol; xSymbol *symbol;
xRect *rct; xRect *rct;
int flip, rot; short flip, rot;
double x0,y0, pinx0, piny0; double x0,y0, pinx0, piny0;
char num[40]; char num[40];

View File

@ -22,8 +22,8 @@
#include "xschem.h" #include "xschem.h"
static int select_rot = 0; static short select_rot = 0;
static int select_flip = 0; static short select_flip = 0;
static double xx1,yy1,xx2,yy2; static double xx1,yy1,xx2,yy2;
@ -33,10 +33,10 @@ void symbol_bbox(int i, double *x1,double *y1, double *x2, double *y2)
int j; int j;
xText text; xText text;
const char *tmp_txt; const char *tmp_txt;
int rot,flip; short rot,flip;
double x0, y0 ; double x0, y0 ;
double text_x0, text_y0; double text_x0, text_y0;
int sym_rot, sym_flip; short sym_rot, sym_flip;
double xx1,yy1,xx2,yy2; double xx1,yy1,xx2,yy2;

View File

@ -31,7 +31,7 @@ void global_spice_netlist(int global) /* netlister driver */
int first; int first;
FILE *fd; FILE *fd;
const char *str_tmp; const char *str_tmp;
int mult; int multip;
unsigned int *stored_flags; unsigned int *stored_flags;
int i, save_ok; int i, save_ok;
char *type=NULL; char *type=NULL;
@ -100,7 +100,7 @@ void global_spice_netlist(int global) /* netlister driver */
continue; continue;
} }
if( type && IS_PIN(type)) { if( type && IS_PIN(type)) {
str_tmp = expandlabel ( get_tok_value(xctx->inst[i].prop_ptr,"lab",0) ,&mult); str_tmp = expandlabel ( get_tok_value(xctx->inst[i].prop_ptr,"lab",0) ,&multip);
dbg(1, "global_spice_netlist(): |%s|\n", dbg(1, "global_spice_netlist(): |%s|\n",
get_tok_value(xctx->inst[i].prop_ptr,"lab",0)); get_tok_value(xctx->inst[i].prop_ptr,"lab",0));
/*must handle invalid node names */ /*must handle invalid node names */
@ -311,7 +311,7 @@ void spice_block_netlist(FILE *fd, int i)
char filename[PATH_MAX]; char filename[PATH_MAX];
const char *str_tmp; const char *str_tmp;
/* int j; */ /* int j; */
/* int mult; */ /* int multip; */
char *extra=NULL; char *extra=NULL;
if(!strcmp( get_tok_value(xctx->sym[i].prop_ptr,"spice_stop",0),"true") ) if(!strcmp( get_tok_value(xctx->sym[i].prop_ptr,"spice_stop",0),"true") )
@ -458,15 +458,15 @@ static unsigned int str_hash(const char *tok)
*/ */
struct hashentry *str_hash_lookup(struct hashentry **table, const char *token, const char *value, int what) struct hashentry *str_hash_lookup(struct hashentry **table, const char *token, const char *value, int what)
{ {
unsigned int hashcode, index; unsigned int hashcode, idx;
struct hashentry *entry, *saveptr, **preventry; struct hashentry *entry, *saveptr, **preventry;
int s ; int s ;
if(token==NULL) return NULL; if(token==NULL) return NULL;
hashcode=str_hash(token); hashcode=str_hash(token);
index=hashcode % HASHSIZE; idx=hashcode % HASHSIZE;
entry=table[index]; entry=table[idx];
preventry=&table[index]; preventry=&table[idx];
while(1) while(1)
{ {
if( !entry ) /* empty slot */ if( !entry ) /* empty slot */
@ -545,15 +545,15 @@ void free_hash(struct hashentry **table)
*/ */
struct int_hashentry *int_hash_lookup(struct int_hashentry **table, const char *token, const int value, int what) struct int_hashentry *int_hash_lookup(struct int_hashentry **table, const char *token, const int value, int what)
{ {
unsigned int hashcode, index; unsigned int hashcode, idx;
struct int_hashentry *entry, *saveptr, **preventry; struct int_hashentry *entry, *saveptr, **preventry;
int s ; int s ;
if(token==NULL) return NULL; if(token==NULL) return NULL;
hashcode=str_hash(token); hashcode=str_hash(token);
index=hashcode % HASHSIZE; idx=hashcode % HASHSIZE;
entry=table[index]; entry=table[idx];
preventry=&table[index]; preventry=&table[idx];
while(1) while(1)
{ {
if( !entry ) /* empty slot */ if( !entry ) /* empty slot */

View File

@ -184,11 +184,11 @@ static void svg_drawline(int gc, int bus, double linex1,double liney1,double lin
static double textx1,textx2,texty1,texty2; static double textx1,textx2,texty1,texty2;
static void svg_draw_string_line(int layer, char *s, double x, double y, double size, int rot, int flip, static void svg_draw_string_line(int layer, char *s, double x, double y, double size, short rot, short flip,
int lineno, double fontheight, double fontascent, double fontdescent, int llength) int lineno, double fontheight, double fontascent, double fontdescent, int llength)
{ {
double ix, iy; double ix, iy;
int rot1; short rot1;
int line_delta; int line_delta;
int line_offset; int line_offset;
double lines; double lines;
@ -243,7 +243,7 @@ static void svg_draw_string_line(int layer, char *s, double x, double y, double
fprintf(fd, "</text>\n"); fprintf(fd, "</text>\n");
} }
static void svg_draw_string(int layer, const char *str, int rot, int flip, int hcenter, int vcenter, static void svg_draw_string(int layer, const char *str, short rot, short flip, int hcenter, int vcenter,
double x,double y, double xscale, double yscale) double x,double y, double xscale, double yscale)
{ {
char *tt, *ss, *sss=NULL; char *tt, *ss, *sss=NULL;
@ -305,7 +305,7 @@ static void svg_draw_string(int layer, const char *str, int rot, int flip, int h
static void old_svg_draw_string(int layer, const char *str, static void old_svg_draw_string(int layer, const char *str,
int rot, int flip, int hcenter, int vcenter, short rot, short flip, int hcenter, int vcenter,
double x,double y, double x,double y,
double xscale, double yscale) double xscale, double yscale)
{ {
@ -381,13 +381,14 @@ static void svg_drawgrid()
static void svg_draw_symbol(int n,int layer,int tmp_flip, int rot, static void svg_draw_symbol(int n,int layer,short tmp_flip, short rot,
double xoffset, double yoffset) double xoffset, double yoffset)
/* draws current layer only, should be called within */ /* draws current layer only, should be called within */
{ /* a "for(i=0;i<cadlayers;i++)" loop */ { /* a "for(i=0;i<cadlayers;i++)" loop */
int j; int j;
double x0,y0,x1,y1,x2,y2; double x0,y0,x1,y1,x2,y2;
int flip, textlayer; short flip;
int textlayer;
xLine line; xLine line;
xRect box; xRect box;
xText text; xText text;

View File

@ -79,15 +79,15 @@ static struct inst_hashentry *inst_hash_lookup(struct inst_hashentry **table, ch
int value, int remove, size_t token_size) int value, int remove, size_t token_size)
{ {
unsigned int hashcode; unsigned int hashcode;
unsigned int index; unsigned int idx;
struct inst_hashentry *entry, *saveptr, **preventry; struct inst_hashentry *entry, *saveptr, **preventry;
int s; int s;
if(token==NULL) return NULL; if(token==NULL) return NULL;
hashcode=hash(token); hashcode=hash(token);
index=hashcode % HASHSIZE; idx=hashcode % HASHSIZE;
entry=table[index]; entry=table[idx];
preventry=&table[index]; preventry=&table[idx];
while(1) { while(1) {
if( !entry ) { /* empty slot */ if( !entry ) { /* empty slot */
if(remove == XINSERT || remove == XINSERT_NOREPLACE) { /* insert data */ if(remove == XINSERT || remove == XINSERT_NOREPLACE) { /* insert data */
@ -175,7 +175,7 @@ void check_unique_names(int rename)
int i, j, first = 1; int i, j, first = 1;
char *tmp = NULL; char *tmp = NULL;
int newpropcnt = 0; int newpropcnt = 0;
int mult; int multip;
char *start; char *start;
char *comma_pos; char *comma_pos;
char *expanded_instname = NULL; char *expanded_instname = NULL;
@ -201,9 +201,9 @@ void check_unique_names(int rename)
first = 1; first = 1;
for(i=0;i<xctx->instances;i++) { for(i=0;i<xctx->instances;i++) {
if(xctx->inst[i].instname && xctx->inst[i].instname[0]) { if(xctx->inst[i].instname && xctx->inst[i].instname[0]) {
my_strdup(118, &expanded_instname, expandlabel(xctx->inst[i].instname, &mult)); my_strdup(118, &expanded_instname, expandlabel(xctx->inst[i].instname, &multip));
comma_pos = 0; comma_pos = 0;
for(j =0; j< mult; j++) { for(j =0; j< multip; j++) {
if(j == 0) start = expanded_instname; if(j == 0) start = expanded_instname;
else start = comma_pos; else start = comma_pos;
comma_pos = strchr(start, ','); comma_pos = strchr(start, ',');
@ -976,7 +976,7 @@ int count_labels(char *s)
void print_vhdl_element(FILE *fd, int inst) void print_vhdl_element(FILE *fd, int inst)
{ {
int i=0, mult, tmp, tmp1; int i=0, multip, tmp, tmp1;
const char *str_ptr; const char *str_ptr;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
const char *lab; const char *lab;
@ -1113,7 +1113,7 @@ void print_vhdl_element(FILE *fd, int inst)
for(i=0;i<no_of_pins;i++) for(i=0;i<no_of_pins;i++)
{ {
if(strcmp(get_tok_value(pinptr[i].prop_ptr,"vhdl_ignore",0), "true")) { if(strcmp(get_tok_value(pinptr[i].prop_ptr,"vhdl_ignore",0), "true")) {
if( (str_ptr = net_name(inst,i, &mult, 0, 1)) ) if( (str_ptr = net_name(inst,i, &multip, 0, 1)) )
{ {
if(tmp) fprintf(fd, " ,\n"); if(tmp) fprintf(fd, " ,\n");
fprintf(fd, " %s => %s", fprintf(fd, " %s => %s",
@ -1335,7 +1335,7 @@ void print_verilog_param(FILE *fd, int symbol)
void print_tedax_subckt(FILE *fd, int symbol) void print_tedax_subckt(FILE *fd, int symbol)
{ {
int i=0, mult; int i=0, multip;
const char *str_ptr=NULL; const char *str_ptr=NULL;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
char *format=NULL,*s, *token=NULL; char *format=NULL,*s, *token=NULL;
@ -1392,7 +1392,7 @@ void print_tedax_subckt(FILE *fd, int symbol)
{ {
if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"spice_ignore",0), "true")) {
str_ptr= str_ptr=
expandlabel(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"name",0), &mult); expandlabel(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"name",0), &multip);
fprintf(fd, "%s ", str_ptr); fprintf(fd, "%s ", str_ptr);
} }
} }
@ -1404,7 +1404,7 @@ void print_tedax_subckt(FILE *fd, int symbol)
if(!strcmp(get_tok_value(prop, "name",0), token + 2)) break; if(!strcmp(get_tok_value(prop, "name",0), token + 2)) break;
} }
if(i<no_of_pins && strcmp(get_tok_value(prop,"spice_ignore",0), "true")) { if(i<no_of_pins && strcmp(get_tok_value(prop,"spice_ignore",0), "true")) {
fprintf(fd, "%s ", expandlabel(token+2, &mult)); fprintf(fd, "%s ", expandlabel(token+2, &multip));
} }
} }
/* reference by pin number instead of pin name, allows faster lookup of the attached net name 20180911 */ /* reference by pin number instead of pin name, allows faster lookup of the attached net name 20180911 */
@ -1413,7 +1413,7 @@ void print_tedax_subckt(FILE *fd, int symbol)
if(pin_number < no_of_pins) { if(pin_number < no_of_pins) {
if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"spice_ignore",0), "true")) {
str_ptr = get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"name",0); str_ptr = get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"name",0);
fprintf(fd, "%s ", expandlabel(str_ptr, &mult)); fprintf(fd, "%s ", expandlabel(str_ptr, &multip));
} }
} }
} }
@ -1443,7 +1443,7 @@ void print_tedax_subckt(FILE *fd, int symbol)
void print_spice_subckt(FILE *fd, int symbol) void print_spice_subckt(FILE *fd, int symbol)
{ {
int i=0, mult; int i=0, multip;
const char *str_ptr=NULL; const char *str_ptr=NULL;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
char *format=NULL,*s, *token=NULL; char *format=NULL,*s, *token=NULL;
@ -1500,7 +1500,7 @@ void print_spice_subckt(FILE *fd, int symbol)
{ {
if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"spice_ignore",0), "true")) {
str_ptr= str_ptr=
expandlabel(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"name",0), &mult); expandlabel(get_tok_value(xctx->sym[symbol].rect[PINLAYER][i].prop_ptr,"name",0), &multip);
fprintf(fd, "%s ", str_ptr); fprintf(fd, "%s ", str_ptr);
} }
} }
@ -1512,7 +1512,7 @@ void print_spice_subckt(FILE *fd, int symbol)
if(!strcmp(get_tok_value(prop, "name",0), token + 2)) break; if(!strcmp(get_tok_value(prop, "name",0), token + 2)) break;
} }
if(i<no_of_pins && strcmp(get_tok_value(prop,"spice_ignore",0), "true")) { if(i<no_of_pins && strcmp(get_tok_value(prop,"spice_ignore",0), "true")) {
fprintf(fd, "%s ", expandlabel(token+2, &mult)); fprintf(fd, "%s ", expandlabel(token+2, &multip));
} }
} }
/* reference by pin number instead of pin name, allows faster lookup of the attached net name 20180911 */ /* reference by pin number instead of pin name, allows faster lookup of the attached net name 20180911 */
@ -1521,7 +1521,7 @@ void print_spice_subckt(FILE *fd, int symbol)
if(pin_number < no_of_pins) { if(pin_number < no_of_pins) {
if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"spice_ignore",0), "true")) {
str_ptr = get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"name",0); str_ptr = get_tok_value(xctx->sym[symbol].rect[PINLAYER][pin_number].prop_ptr,"name",0);
fprintf(fd, "%s ", expandlabel(str_ptr, &mult)); fprintf(fd, "%s ", expandlabel(str_ptr, &multip));
} }
} }
} }
@ -1550,7 +1550,7 @@ void print_spice_subckt(FILE *fd, int symbol)
void print_spice_element(FILE *fd, int inst) void print_spice_element(FILE *fd, int inst)
{ {
int i=0, mult, tmp; int i=0, multip, tmp;
const char *str_ptr=NULL; const char *str_ptr=NULL;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
char *template=NULL,*format=NULL,*s, *name=NULL, *token=NULL; char *template=NULL,*format=NULL,*s, *name=NULL, *token=NULL;
@ -1711,12 +1711,12 @@ void print_spice_element(FILE *fd, int inst)
{ {
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if(strcmp(get_tok_value(prop, "spice_ignore", 0), "true")) { if(strcmp(get_tok_value(prop, "spice_ignore", 0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars
* so 1-char writes to result do not need reallocs */ * so 1-char writes to result do not need reallocs */
STR_ALLOC(&result, tmp + result_pos, &size); STR_ALLOC(&result, tmp + result_pos, &size);
result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", mult, str_ptr); result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", multip, str_ptr);
} }
} }
} }
@ -1725,12 +1725,12 @@ void print_spice_element(FILE *fd, int inst)
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if (!strcmp( get_tok_value(prop,"name",0), token+2)) { if (!strcmp( get_tok_value(prop,"name",0), token+2)) {
if(strcmp(get_tok_value(prop,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(prop,"spice_ignore",0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars
* so 1-char writes to result do not need reallocs */ * so 1-char writes to result do not need reallocs */
STR_ALLOC(&result, tmp + result_pos, &size); STR_ALLOC(&result, tmp + result_pos, &size);
result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", mult, str_ptr); result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", multip, str_ptr);
} }
break; break;
} }
@ -1744,12 +1744,12 @@ void print_spice_element(FILE *fd, int inst)
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr;
si = get_tok_value(prop, "spice_ignore",0); si = get_tok_value(prop, "spice_ignore",0);
if(strcmp(si, "true")) { if(strcmp(si, "true")) {
str_ptr = net_name(inst,pin_number, &mult, 0, 1); str_ptr = net_name(inst,pin_number, &multip, 0, 1);
tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars tmp = strlen(str_ptr) +100 ; /* always make room for some extra chars
* so 1-char writes to result do not need reallocs */ * so 1-char writes to result do not need reallocs */
STR_ALLOC(&result, tmp + result_pos, &size); STR_ALLOC(&result, tmp + result_pos, &size);
result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", mult, str_ptr); result_pos += my_snprintf(result + result_pos, tmp, "?%d %s ", multip, str_ptr);
} }
} }
} }
@ -1834,7 +1834,7 @@ void print_spice_element(FILE *fd, int inst)
void print_tedax_element(FILE *fd, int inst) void print_tedax_element(FILE *fd, int inst)
{ {
int i=0, mult; int i=0, multip;
const char *str_ptr=NULL; const char *str_ptr=NULL;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
char *template=NULL,*format=NULL,*s, *name=NULL, *token=NULL; char *template=NULL,*format=NULL,*s, *name=NULL, *token=NULL;
@ -1927,7 +1927,7 @@ void print_tedax_element(FILE *fd, int inst)
get_tok_value((xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr,"pinnumber",0)); get_tok_value((xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr,"pinnumber",0));
} }
if(!get_tok_size) my_strdup(501, &pinnumber, "--UNDEF--"); if(!get_tok_size) my_strdup(501, &pinnumber, "--UNDEF--");
tmp = net_name(inst,i, &mult, 0, 1); tmp = net_name(inst,i, &multip, 0, 1);
if(tmp && strcmp(tmp, "__UNCONNECTED_PIN__")) { if(tmp && strcmp(tmp, "__UNCONNECTED_PIN__")) {
fprintf(fd, "conn %s %s %s %s %d\n", fprintf(fd, "conn %s %s %s %s %d\n",
name, name,
@ -2030,9 +2030,9 @@ void print_tedax_element(FILE *fd, int inst)
{ /* and node number: m1 n1 m2 n2 .... */ { /* and node number: m1 n1 m2 n2 .... */
for(i=0;i<no_of_pins;i++) for(i=0;i<no_of_pins;i++)
{ {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
/* fprintf(errfp, "inst: %s --> %s\n", name, str_ptr); */ /* fprintf(errfp, "inst: %s --> %s\n", name, str_ptr); */
fprintf(fd, "?%d %s ", mult, str_ptr); fprintf(fd, "?%d %s ", multip, str_ptr);
} }
} }
else if(token[0]=='@' && token[1]=='@') { /* recognize single pins 15112003 */ else if(token[0]=='@' && token[1]=='@') { /* recognize single pins 15112003 */
@ -2042,7 +2042,7 @@ void print_tedax_element(FILE *fd, int inst)
token+2 token+2
) )
) { ) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
fprintf(fd, "%s", str_ptr); fprintf(fd, "%s", str_ptr);
break; break;
} }
@ -2090,7 +2090,7 @@ void print_tedax_element(FILE *fd, int inst)
/* @#n --> return net name attached to pin of index 'n' */ /* @#n --> return net name attached to pin of index 'n' */
pin_number = atoi(token+2); pin_number = atoi(token+2);
if(pin_number < no_of_pins) { if(pin_number < no_of_pins) {
str_ptr = net_name(inst,pin_number, &mult, 0, 1); str_ptr = net_name(inst,pin_number, &multip, 0, 1);
fprintf(fd, "%s", str_ptr); fprintf(fd, "%s", str_ptr);
} }
} }
@ -2147,7 +2147,7 @@ void print_tedax_element(FILE *fd, int inst)
*/ */
void print_verilog_element(FILE *fd, int inst) void print_verilog_element(FILE *fd, int inst)
{ {
int i=0, mult, tmp; int i=0, multip, tmp;
const char *str_ptr; const char *str_ptr;
const char *lab; const char *lab;
char *name=NULL; char *name=NULL;
@ -2261,10 +2261,10 @@ void print_verilog_element(FILE *fd, int inst)
{ {
xSymbol *ptr = xctx->inst[inst].ptr+ xctx->sym; xSymbol *ptr = xctx->inst[inst].ptr+ xctx->sym;
if(strcmp(get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"verilog_ignore",0), "true")) { if(strcmp(get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"verilog_ignore",0), "true")) {
if( (str_ptr = net_name(inst,i, &mult, 0, 1)) ) if( (str_ptr = net_name(inst,i, &multip, 0, 1)) )
{ {
if(tmp) fprintf(fd,"\n"); if(tmp) fprintf(fd,"\n");
fprintf(fd, " ?%d %s %s ", mult, fprintf(fd, " ?%d %s %s ", multip,
get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"name",0), get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"name",0),
str_ptr); str_ptr);
tmp=1; tmp=1;
@ -2281,7 +2281,7 @@ void print_verilog_element(FILE *fd, int inst)
} }
const char *net_name(int i, int j, int *mult, int hash_prefix_unnamed_net, int erc) const char *net_name(int i, int j, int *multip, int hash_prefix_unnamed_net, int erc)
{ {
int tmp; int tmp;
char errstr[2048]; char errstr[2048];
@ -2291,35 +2291,35 @@ const char *net_name(int i, int j, int *mult, int hash_prefix_unnamed_net, int e
{ {
if((xctx->inst[i].node[j])[0] == '#') /* unnamed net */ if((xctx->inst[i].node[j])[0] == '#') /* unnamed net */
{ {
/* get unnamed node multiplicity ( minimum mult found in circuit) */ /* get unnamed node multiplicity ( minimum multip found in circuit) */
*mult = get_unnamed_node(3, 0, atoi((xctx->inst[i].node[j])+4) ); *multip = get_unnamed_node(3, 0, atoi((xctx->inst[i].node[j])+4) );
dbg(2, "net_name(): node = %s n=%d mult=%d\n", dbg(2, "net_name(): node = %s n=%d multip=%d\n",
xctx->inst[i].node[j], atoi(xctx->inst[i].node[j]), *mult); xctx->inst[i].node[j], atoi(xctx->inst[i].node[j]), *multip);
if(hash_prefix_unnamed_net) { if(hash_prefix_unnamed_net) {
if(*mult>1) /* unnamed is a bus */ if(*multip>1) /* unnamed is a bus */
my_snprintf(str_node, S(str_node), "%s[%d:0]", (xctx->inst[i].node[j]), *mult-1); my_snprintf(str_node, S(str_node), "%s[%d:0]", (xctx->inst[i].node[j]), *multip-1);
else else
my_snprintf(str_node, S(str_node), "%s", (xctx->inst[i].node[j]) ); my_snprintf(str_node, S(str_node), "%s", (xctx->inst[i].node[j]) );
} else { } else {
if(*mult>1) /* unnamed is a bus */ if(*multip>1) /* unnamed is a bus */
my_snprintf(str_node, S(str_node), "%s[%d:0]", (xctx->inst[i].node[j])+1, *mult-1); my_snprintf(str_node, S(str_node), "%s[%d:0]", (xctx->inst[i].node[j])+1, *multip-1);
else else
my_snprintf(str_node, S(str_node), "%s", (xctx->inst[i].node[j])+1 ); my_snprintf(str_node, S(str_node), "%s", (xctx->inst[i].node[j])+1 );
} }
expandlabel(get_tok_value( /* remove quotes --. */ expandlabel(get_tok_value( /* remove quotes --. */
(xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][j].prop_ptr,"name",0), mult); (xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][j].prop_ptr,"name",0), multip);
return expandlabel(str_node, &tmp); return expandlabel(str_node, &tmp);
} }
else else
{ {
expandlabel(get_tok_value( /* remove quotes --. */ expandlabel(get_tok_value( /* remove quotes --. */
(xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][j].prop_ptr,"name",0), mult); (xctx->inst[i].ptr+ xctx->sym)->rect[PINLAYER][j].prop_ptr,"name",0), multip);
return expandlabel(xctx->inst[i].node[j], &tmp); return expandlabel(xctx->inst[i].node[j], &tmp);
} }
} }
else else
{ {
*mult=1; *multip=1;
if(erc) { if(erc) {
my_snprintf(errstr, S(errstr), "Warning: unconnected pin, Inst idx: %d, Pin idx: %d Inst:%s\n", my_snprintf(errstr, S(errstr), "Warning: unconnected pin, Inst idx: %d, Pin idx: %d Inst:%s\n",
@ -2337,7 +2337,7 @@ const char *net_name(int i, int j, int *mult, int hash_prefix_unnamed_net, int e
void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 */ void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 */
{ {
int i=0, mult, tmp; int i=0, multip, tmp;
const char *str_ptr; const char *str_ptr;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
const char *lab; const char *lab;
@ -2447,7 +2447,7 @@ void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 *
{ {
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if(strcmp(get_tok_value(prop,"vhdl_ignore",0), "true")) { if(strcmp(get_tok_value(prop,"vhdl_ignore",0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
} }
@ -2457,7 +2457,7 @@ void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 *
xSymbol *ptr = xctx->inst[inst].ptr+ xctx->sym; xSymbol *ptr = xctx->inst[inst].ptr+ xctx->sym;
if(!strcmp( get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"name",0), token+2)) { if(!strcmp( get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"name",0), token+2)) {
if(strcmp(get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"vhdl_ignore",0), "true")) { if(strcmp(get_tok_value(ptr->rect[PINLAYER][i].prop_ptr,"vhdl_ignore",0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
break; break;
@ -2470,7 +2470,7 @@ void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 *
if(pin_number < no_of_pins) { if(pin_number < no_of_pins) {
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr;
if(strcmp(get_tok_value(prop,"vhdl_ignore",0), "true")) { if(strcmp(get_tok_value(prop,"vhdl_ignore",0), "true")) {
str_ptr = net_name(inst,pin_number, &mult, 0, 1); str_ptr = net_name(inst,pin_number, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
} }
@ -2510,7 +2510,7 @@ void print_vhdl_primitive(FILE *fd, int inst) /* netlist primitives, 20071217 *
/* print verilog element if verilog_format is specified */ /* print verilog element if verilog_format is specified */
void print_verilog_primitive(FILE *fd, int inst) /* netlist switch level primitives, 15112003 */ void print_verilog_primitive(FILE *fd, int inst) /* netlist switch level primitives, 15112003 */
{ {
int i=0, mult, tmp; int i=0, multip, tmp;
const char *str_ptr; const char *str_ptr;
register int c, state=TOK_BEGIN, space; register int c, state=TOK_BEGIN, space;
const char *lab; const char *lab;
@ -2621,7 +2621,7 @@ void print_verilog_primitive(FILE *fd, int inst) /* netlist switch level primiti
{ {
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if(strcmp(get_tok_value(prop, "verilog_ignore",0), "true")) { if(strcmp(get_tok_value(prop, "verilog_ignore",0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
} }
@ -2631,7 +2631,7 @@ void print_verilog_primitive(FILE *fd, int inst) /* netlist switch level primiti
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if(!strcmp( get_tok_value(prop,"name",0), token+2)) { if(!strcmp( get_tok_value(prop,"name",0), token+2)) {
if(strcmp(get_tok_value(prop, "verilog_ignore",0), "true")) { if(strcmp(get_tok_value(prop, "verilog_ignore",0), "true")) {
str_ptr = net_name(inst,i, &mult, 0, 1); str_ptr = net_name(inst,i, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
break; break;
@ -2646,7 +2646,7 @@ void print_verilog_primitive(FILE *fd, int inst) /* netlist switch level primiti
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][pin_number].prop_ptr;
vi = get_tok_value(prop,"verilog_ignore",0); vi = get_tok_value(prop,"verilog_ignore",0);
if(strcmp(vi, "true")) { if(strcmp(vi, "true")) {
str_ptr = net_name(inst,pin_number, &mult, 0, 1); str_ptr = net_name(inst,pin_number, &multip, 0, 1);
fprintf(fd, "----pin(%s) ", str_ptr); fprintf(fd, "----pin(%s) ", str_ptr);
} }
} }
@ -2822,14 +2822,14 @@ const char *translate(int inst, const char* s)
memcpy(result+result_pos,tmp_sym_name, tmp+1); memcpy(result+result_pos,tmp_sym_name, tmp+1);
result_pos+=tmp; result_pos+=tmp;
} else if(token[0]=='@' && token[1]=='@') { /* recognize single pins 15112003 */ } else if(token[0]=='@' && token[1]=='@') { /* recognize single pins 15112003 */
int i, mult; int i, multip;
int no_of_pins= (xctx->inst[inst].ptr+ xctx->sym)->rects[PINLAYER]; int no_of_pins= (xctx->inst[inst].ptr+ xctx->sym)->rects[PINLAYER];
prepare_netlist_structs(0); prepare_netlist_structs(0);
for(i=0;i<no_of_pins;i++) { for(i=0;i<no_of_pins;i++) {
char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr; char *prop = (xctx->inst[inst].ptr+ xctx->sym)->rect[PINLAYER][i].prop_ptr;
if (!strcmp( get_tok_value(prop,"name",0), token+2)) { if (!strcmp( get_tok_value(prop,"name",0), token+2)) {
if(strcmp(get_tok_value(prop,"spice_ignore",0), "true")) { if(strcmp(get_tok_value(prop,"spice_ignore",0), "true")) {
const char *str_ptr = net_name(inst,i, &mult, 0, 0); const char *str_ptr = net_name(inst,i, &multip, 0, 0);
tmp = strlen(str_ptr) +100 ; tmp = strlen(str_ptr) +100 ;
STR_ALLOC(&result, tmp + result_pos, &size); STR_ALLOC(&result, tmp + result_pos, &size);
result_pos += my_snprintf(result + result_pos, tmp, "%s", str_ptr); result_pos += my_snprintf(result + result_pos, tmp, "%s", str_ptr);

View File

@ -209,7 +209,7 @@ unsigned int find_best_color(char colorname[])
int i; int i;
double distance=10000000000.0, dist, r, g, b, red, green, blue; double distance=10000000000.0, dist, r, g, b, red, green, blue;
double deltar,deltag,deltab; double deltar,deltag,deltab;
unsigned int index; unsigned int idx;
#ifdef __unix__ #ifdef __unix__
if( XAllocNamedColor(display, colormap, colorname, &xcolor_exact, &xcolor) ==0 ) if( XAllocNamedColor(display, colormap, colorname, &xcolor_exact, &xcolor) ==0 )
#else #else
@ -232,7 +232,7 @@ unsigned int find_best_color(char colorname[])
"find_best_color(): Server failed to allocate requested color, finding substitute\n"); "find_best_color(): Server failed to allocate requested color, finding substitute\n");
XLookupColor(display, colormap, colorname, &xcolor_exact, &xcolor); XLookupColor(display, colormap, colorname, &xcolor_exact, &xcolor);
red = xcolor.red; green = xcolor.green; blue = xcolor.blue; red = xcolor.red; green = xcolor.green; blue = xcolor.blue;
index=0; idx=0;
for(i = 0;i<=255; i++) for(i = 0;i<=255; i++)
{ {
r = xcolor_array[i].red ; g = xcolor_array[i].green ; b = xcolor_array[i].blue; r = xcolor_array[i].red ; g = xcolor_array[i].green ; b = xcolor_array[i].blue;
@ -240,7 +240,7 @@ unsigned int find_best_color(char colorname[])
dist = deltar*deltar + deltag*deltag + deltab*deltab; dist = deltar*deltar + deltag*deltag + deltab*deltab;
if( dist <= distance ) if( dist <= distance )
{ {
index = i; idx = i;
distance = dist; distance = dist;
} }
} }
@ -249,13 +249,13 @@ unsigned int find_best_color(char colorname[])
{ {
/*XLookupColor(display, colormap, colorname, &xcolor_exact, &xcolor); */ /*XLookupColor(display, colormap, colorname, &xcolor_exact, &xcolor); */
#ifdef __unix__ #ifdef __unix__
index = xcolor.pixel; idx = xcolor.pixel;
#else #else
index = xc->pixel; idx = xc->pixel;
#endif #endif
} }
return index; return idx;
} }

View File

@ -340,7 +340,7 @@ typedef struct
short sel; short sel;
char *node; char *node;
char *prop_ptr; char *prop_ptr;
int bus; /* 20171201 cache here wire "bus" property, to avoid too many get_tok_value() calls */ short bus; /* 20171201 cache here wire "bus" property, to avoid too many get_tok_value() calls */
} xWire; } xWire;
typedef struct typedef struct
@ -351,8 +351,8 @@ typedef struct
double y2; double y2;
unsigned short sel; unsigned short sel;
char *prop_ptr; char *prop_ptr;
int dash; short dash;
int bus; short bus;
} xLine; } xLine;
typedef struct typedef struct
@ -363,7 +363,7 @@ typedef struct
double y2; double y2;
unsigned short sel; unsigned short sel;
char *prop_ptr; char *prop_ptr;
int dash; short dash;
} xRect; } xRect;
typedef struct typedef struct
@ -376,8 +376,8 @@ typedef struct
unsigned short *selected_point; unsigned short *selected_point;
unsigned short sel; unsigned short sel;
char *prop_ptr; char *prop_ptr;
int fill; short fill;
int dash; short dash;
} xPoly; } xPoly;
typedef struct typedef struct
@ -389,24 +389,24 @@ typedef struct
double b; /* arc angle */ double b; /* arc angle */
unsigned short sel; unsigned short sel;
char *prop_ptr; char *prop_ptr;
int fill; short fill;
int dash; short dash;
} xArc; } xArc;
typedef struct typedef struct
{ {
char *txt_ptr; char *txt_ptr;
double x0,y0; double x0,y0;
int rot; short rot;
int flip; short flip;
int sel; short sel;
double xscale; double xscale;
double yscale; double yscale;
char *prop_ptr; char *prop_ptr;
int layer; /* 20171201 for cairo */ short layer; /* 20171201 for cairo */
int hcenter, vcenter; short hcenter, vcenter;
char *font; /* 20171201 for cairo */ char *font; /* 20171201 for cairo */
int flags; short flags;
} xText; } xText;
typedef struct typedef struct
@ -429,7 +429,7 @@ typedef struct
char *prop_ptr; char *prop_ptr;
char *type; char *type;
char *templ; char *templ;
unsigned int flags; /* currently only used for embedded symbols (EMBEDDED) */ short flags; /* currently only used for embedded symbols (EMBEDDED) */
} xSymbol; } xSymbol;
typedef struct typedef struct
@ -446,10 +446,10 @@ typedef struct
double yy1; double yy1;
double xx2; double xx2;
double yy2; double yy2;
int rot; short rot;
int flip; short flip;
int sel; short sel;
int flags; /* bit 0: skip field, bit 1: flag for different textlayer for pin/labels short flags; /* bit 0: skip field, bit 1: flag for different textlayer for pin/labels
* bit 2 : hilight flag. * bit 2 : hilight flag.
*/ */
char *prop_ptr; char *prop_ptr;
@ -546,8 +546,8 @@ typedef struct {
struct Lcc { /* used for symbols containing schematics as instances (LCC, Local Custom Cell) */ struct Lcc { /* used for symbols containing schematics as instances (LCC, Local Custom Cell) */
double x0; double x0;
double y0; double y0;
int rot; short rot;
int flip; short flip;
FILE *fd; FILE *fd;
char *prop_ptr; char *prop_ptr;
char *symname; char *symname;
@ -797,7 +797,7 @@ extern void arc_bbox(double x, double y, double r, double a, double b, double *b
extern void bbox(int what,double x1,double y1, double x2, double y2); extern void bbox(int what,double x1,double y1, double x2, double y2);
extern int set_text_custom_font(xText *txt); extern int set_text_custom_font(xText *txt);
extern int text_bbox(const char * str,double xscale, double yscale, extern int text_bbox(const char * str,double xscale, double yscale,
int rot, int flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1, short rot, short flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1,
double *rx2, double *ry2); double *rx2, double *ry2);
@ -811,7 +811,7 @@ extern void hash_instances(void); /* 20171203 insert instance bbox in spatial h
#ifdef HAS_CAIRO #ifdef HAS_CAIRO
extern int text_bbox_nocairo(const char * str,double xscale, double yscale, extern int text_bbox_nocairo(const char * str,double xscale, double yscale,
int rot, int flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1, short rot, short flip, int hcenter, int vcenter, double x1,double y1, double *rx1, double *ry1,
double *rx2, double *ry2); double *rx2, double *ry2);
#endif #endif
@ -836,10 +836,10 @@ extern Selected find_closest_obj(double mx,double my);
extern void find_closest_net_or_symbol_pin(double mx,double my, double *x, double *y); extern void find_closest_net_or_symbol_pin(double mx,double my, double *x, double *y);
extern void drawline(int c, int what, double x1,double y1,double x2,double y2, int dash); extern void drawline(int c, int what, double x1,double y1,double x2,double y2, int dash);
extern void draw_string(int layer,int what, const char *str, int rot, int flip, int hcenter, int vcenter, extern void draw_string(int layer,int what, const char *str, short rot, short flip, int hcenter, int vcenter,
double x1, double y1, double xscale, double yscale); double x1, double y1, double xscale, double yscale);
extern void draw_symbol(int what,int c, int n,int layer, extern void draw_symbol(int what,int c, int n,int layer,
int tmp_flip, int tmp_rot, double xoffset, double yoffset); short tmp_flip, short tmp_rot, double xoffset, double yoffset);
extern void drawrect(int c, int what, double rectx1,double recty1, extern void drawrect(int c, int what, double rectx1,double recty1,
double rectx2,double recty2, int dash); double rectx2,double recty2, int dash);
extern void filledrect(int c, int what, double rectx1,double recty1, extern void filledrect(int c, int what, double rectx1,double recty1,
@ -856,8 +856,8 @@ extern void filledarc(int c, int what, double x, double y, double r, double a, d
extern void drawtemppolygon(GC gc, int what, double *x, double *y, int points); extern void drawtemppolygon(GC gc, int what, double *x, double *y, int points);
extern void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash); extern void drawpolygon(int c, int what, double *x, double *y, int points, int poly_fill, int dash);
extern void draw_temp_symbol(int what, GC gc, int n,int layer, extern void draw_temp_symbol(int what, GC gc, int n,int layer,
int tmp_flip, int tmp_rot, double xoffset, double yoffset); short tmp_flip, short tmp_rot, double xoffset, double yoffset);
extern void draw_temp_string(GC gc,int what, const char *str, int rot, int flip, int hcenter, int vcenter, extern void draw_temp_string(GC gc,int what, const char *str, short rot, short flip, int hcenter, int vcenter,
double x1, double y1, double xscale, double yscale); double x1, double y1, double xscale, double yscale);
@ -908,7 +908,7 @@ extern void remove_symbol(int i);
extern void clear_drawing(void); extern void clear_drawing(void);
extern int load_sym_def(const char name[], FILE *embed_fd); extern int load_sym_def(const char name[], FILE *embed_fd);
extern void descend_symbol(void); extern void descend_symbol(void);
extern int place_symbol(int pos, const char *symbol_name, double x, double y, int rot, int flip, extern int place_symbol(int pos, const char *symbol_name, double x, double y, short rot, short flip,
const char *inst_props, int draw_sym, int first_call); const char *inst_props, int draw_sym, int first_call);
extern void place_net_label(int type); extern void place_net_label(int type);
extern void attach_labels_to_inst(void); extern void attach_labels_to_inst(void);

View File

@ -106,7 +106,7 @@ let cap = cap + 2e-12
end end
* op * op
write cmos_example.raw write cmos_example.raw
plot all.diffout
.endc .endc
** ngspice ** ngspice