Browse Source

cleanup some macros, try to be more careful

rlar 14 years ago
parent
commit
f3b5336d3a
  1. 13
      src/frontend/control.c
  2. 6
      src/frontend/inp.c
  3. 37
      src/frontend/plotting/clip.c
  4. 10
      src/frontend/plotting/graphdb.c
  5. 8
      src/frontend/plotting/plot5.c
  6. 10
      src/frontend/plotting/x11.c
  7. 85
      src/frontend/rawfile.c
  8. 8
      src/frontend/runcoms2.c
  9. 8
      src/frontend/subckt.c

13
src/frontend/control.c

@ -616,11 +616,14 @@ cp_evloop(char *string)
char *i; char *i;
int nn; int nn;
#define newblock cend[stackp]->co_children = alloc(struct control); \
ZERO(cend[stackp]->co_children,struct control), \
cend[stackp]->co_children->co_parent = cend[stackp]; \
cend[stackp] = cend[stackp]->co_children; \
cend[stackp]->co_type = CO_UNFILLED;
#define newblock \
do { \
cend[stackp]->co_children = alloc(struct control); \
ZERO(cend[stackp]->co_children, struct control); \
cend[stackp]->co_children->co_parent = cend[stackp]; \
cend[stackp] = cend[stackp]->co_children; \
cend[stackp]->co_type = CO_UNFILLED; \
} while(0)
for (;;) { for (;;) {
wlist = getcommand(string); wlist = getcommand(string);

6
src/frontend/inp.c

@ -39,7 +39,11 @@ Author: 1985 Wayne A. Christopher
#include "numparam/numpaif.h" #include "numparam/numpaif.h"
#define line_free(line, flag) { line_free_x(line, flag); line = NULL; }
#define line_free(line, flag) \
do { \
line_free_x(line, flag); \
line = NULL; \
} while(0)
static char *upper(register char *string); static char *upper(register char *string);
static bool doedit(char *filename); static bool doedit(char *filename);

37
src/frontend/plotting/clip.c

@ -23,18 +23,27 @@ Author: 1982 Giles Billingsley
#define CODEMINY 2 #define CODEMINY 2
#define CODEMAXX 4 #define CODEMAXX 4
#define CODEMAXY 8 #define CODEMAXY 8
#define CODE(x,y,c) c = 0;\
if (x < l)\
c = CODEMINX;\
else if (x > r)\
c = CODEMAXX;\
if (y < b)\
c |= CODEMINY;\
else if (y > t)\
c |= CODEMAXY;
#define CODE(x, y, c) \
do { \
c = 0; \
if (x < l) \
c = CODEMINX; \
else if (x > r) \
c = CODEMAXX; \
if (y < b) \
c |= CODEMINY; \
else if (y > t) \
c |= CODEMAXY; \
} while(0)
#define SWAPINT(a, b) \
do { \
int xxxx = (a); \
(a) = (b); \
(b) = xxxx; \
} while(0)
#define SWAPINT(a, b) { int xxxx = (a); (a) = (b); (b) = xxxx; }
/* clip_line will clip a line to a rectangular area. The returned /* clip_line will clip a line to a rectangular area. The returned
* value is 'TRUE' if the line is out of the AOI (therefore does not * value is 'TRUE' if the line is out of the AOI (therefore does not
@ -51,8 +60,8 @@ clip_line(int *pX1, int *pY1, int *pX2, int *pY2, int l, int b, int r, int t)
int x = 0, y = 0; int x = 0, y = 0;
int c,c1,c2; int c,c1,c2;
CODE(x1,y1,c1)
CODE(x2,y2,c2)
CODE(x1,y1,c1);
CODE(x2,y2,c2);
while (c1 || c2) { while (c1 || c2) {
if (c1 & c2) if (c1 & c2)
return (TRUE); /* Line is invisible. */ return (TRUE); /* Line is invisible. */
@ -74,11 +83,11 @@ clip_line(int *pX1, int *pY1, int *pX2, int *pY2, int l, int b, int r, int t)
if (c == c1) { if (c == c1) {
x1 = x; x1 = x;
y1 = y; y1 = y;
CODE(x,y,c1)
CODE(x,y,c1);
} else { } else {
x2 = x; x2 = x;
y2 = y; y2 = y;
CODE(x,y,c2)
CODE(x,y,c2);
} }
} }
*pX1 = x1; *pX1 = x1;

10
src/frontend/plotting/graphdb.c

@ -46,9 +46,13 @@ static GBUCKET GBucket[NUMGBUCKETS];
static int RunningId = 1; static int RunningId = 1;
/* initialize graph structure */ /* initialize graph structure */
#define SETGRAPH(pgraph, id) (pgraph)->graphid = (id); \
(pgraph)->degree = 1; \
(pgraph)->linestyle = -1
#define SETGRAPH(pgraph, id) \
do { \
(pgraph)->graphid = (id); \
(pgraph)->degree = 1; \
(pgraph)->linestyle = -1; \
} while(0)
/* returns NULL on error */ /* returns NULL on error */

8
src/frontend/plotting/plot5.c

@ -12,8 +12,12 @@ Copyright 1990 Regents of the University of California. All rights reserved.
static FILE *plotfile; static FILE *plotfile;
#define putsi(a) putc((char) (a), plotfile); \
putc((char) ((a) >> 8), plotfile)
#define putsi(a) \
do { \
putc((char) (a), plotfile); \
putc((char) ((a) >> 8), plotfile); \
} while(0)
#define SOLID 0 #define SOLID 0
static char *linestyle[] = { "solid", "dotted", "longdashed", "shortdashed", static char *linestyle[] = { "solid", "dotted", "longdashed", "shortdashed",

10
src/frontend/plotting/x11.c

@ -344,9 +344,13 @@ handle_wm_messages(Widget w, XtPointer client_data, XEvent *ev, Boolean *cont)
/* Recover from bad NewViewPort call. */ /* Recover from bad NewViewPort call. */
#define RECOVERNEWVIEWPORT() tfree(graph);\
graph = NULL;
/* need to do this or else DestroyGraph will free it again */
#define RECOVERNEWVIEWPORT() \
do { \
tfree(graph); \
graph = NULL; \
} while(0)
/* need to do this or else DestroyGraph will free it again */
/* NewViewport is responsible for filling in graph->viewport */ /* NewViewport is responsible for filling in graph->viewport */
int int

85
src/frontend/rawfile.c

@ -272,9 +272,32 @@ raw_write(char *name, struct plot *pl, bool app, bool binary)
* and that the variables precede the values. * and that the variables precede the values.
*/ */
#define skip(s) while (*(s) && !isspace(*(s)))(s)++; while (isspace(*(s)))(s)++
#define nonl(s) r = (s); while (*r && (*r != '\n')) r++; *r = '\0'
#define getout {fprintf(cp_err,"Error: bad rawfile\n point %d, var %s\n load aborted\n", i, v->v_name); return (NULL);}
#define SKIP(s) \
do { \
while (*(s) && !isspace(*(s))) \
(s)++; \
while (isspace(*(s))) \
(s)++; \
} while(0)
#define NONL(s) \
do { \
r = (s); \
while (*r && (*r != '\n')) \
r++; \
*r = '\0'; \
} while(0)
#define GETOUT() \
do { \
fprintf(cp_err, \
"Error: bad rawfile\n" \
" point %d, var %s\n" \
" load aborted\n", \
i, v->v_name); \
return (NULL); \
} while(0)
struct plot * struct plot *
raw_read(char *name) { raw_read(char *name) {
@ -316,18 +339,18 @@ raw_read(char *name) {
/* Figure out what this line is... */ /* Figure out what this line is... */
if (ciprefix("title:", buf)) { if (ciprefix("title:", buf)) {
s = buf; s = buf;
skip(s);
nonl(s);
SKIP(s);
NONL(s);
title = copy(s); title = copy(s);
} else if (ciprefix("date:", buf)) { } else if (ciprefix("date:", buf)) {
s = buf; s = buf;
skip(s);
nonl(s);
SKIP(s);
NONL(s);
date = copy(s); date = copy(s);
} else if (ciprefix("plotname:", buf)) { } else if (ciprefix("plotname:", buf)) {
s = buf; s = buf;
skip(s);
nonl(s);
SKIP(s);
NONL(s);
if (curpl) { /* reverse commands list */ if (curpl) { /* reverse commands list */
for (wl=curpl->pl_commands, for (wl=curpl->pl_commands,
curpl->pl_commands=NULL; wl && curpl->pl_commands=NULL; wl &&
@ -349,7 +372,7 @@ raw_read(char *name) {
nvars = npoints = 0; nvars = npoints = 0;
} else if (ciprefix("flags:", buf)) { } else if (ciprefix("flags:", buf)) {
s = buf; s = buf;
skip(s);
SKIP(s);
while ((t = gettok(&s)) != NULL) { while ((t = gettok(&s)) != NULL) {
if (cieq(t, "real")) if (cieq(t, "real"))
flags |= VF_REAL; flags |= VF_REAL;
@ -366,13 +389,13 @@ raw_read(char *name) {
} }
} else if (ciprefix("no. variables:", buf)) { } else if (ciprefix("no. variables:", buf)) {
s = buf; s = buf;
skip(s);
skip(s);
SKIP(s);
SKIP(s);
nvars = scannum(s); nvars = scannum(s);
} else if (ciprefix("no. points:", buf)) { } else if (ciprefix("no. points:", buf)) {
s = buf; s = buf;
skip(s);
skip(s);
SKIP(s);
SKIP(s);
npoints = scannum(s); npoints = scannum(s);
} else if (ciprefix("dimensions:", buf)) { } else if (ciprefix("dimensions:", buf)) {
if (npoints == 0) { if (npoints == 0) {
@ -381,7 +404,7 @@ raw_read(char *name) {
continue; continue;
} }
s = buf; s = buf;
skip(s);
SKIP(s);
if (atodims(s, dims, &numdims)) { /* Something's wrong. */ if (atodims(s, dims, &numdims)) { /* Something's wrong. */
fprintf(cp_err, fprintf(cp_err,
"Warning: syntax error in dimensions, ignored.\n"); "Warning: syntax error in dimensions, ignored.\n");
@ -407,8 +430,8 @@ raw_read(char *name) {
} else if (ciprefix("command:", buf)) { } else if (ciprefix("command:", buf)) {
/* Note that we reverse these commands eventually... */ /* Note that we reverse these commands eventually... */
s = buf; s = buf;
skip(s);
nonl(s);
SKIP(s);
NONL(s);
if (curpl) { if (curpl) {
curpl->pl_commands = wl_cons(copy(s), curpl->pl_commands); curpl->pl_commands = wl_cons(copy(s), curpl->pl_commands);
wl = curpl->pl_commands; wl = curpl->pl_commands;
@ -419,8 +442,8 @@ raw_read(char *name) {
(void) cp_evloop(s); (void) cp_evloop(s);
} else if (ciprefix("option:", buf)) { } else if (ciprefix("option:", buf)) {
s = buf; s = buf;
skip(s);
nonl(s);
SKIP(s);
NONL(s);
if (curpl) { if (curpl) {
wl = cp_lexer(s); wl = cp_lexer(s);
for (vv = curpl->pl_env; vv && vv->va_next; for (vv = curpl->pl_env; vv && vv->va_next;
@ -441,7 +464,7 @@ raw_read(char *name) {
break; break;
} }
s = buf; s = buf;
skip(s);
SKIP(s);
if (!*s) { if (!*s) {
(void) fgets(buf, BSIZE_SP, fp); (void) fgets(buf, BSIZE_SP, fp);
s = buf; s = buf;
@ -593,22 +616,22 @@ raw_read(char *name) {
if (flags & VF_REAL) { if (flags & VF_REAL) {
if (fscanf(fp, " %lf", if (fscanf(fp, " %lf",
&v->v_realdata[i]) != 1) &v->v_realdata[i]) != 1)
getout
GETOUT();
} else { } else {
if (fscanf(fp, " %lf, %lf", if (fscanf(fp, " %lf, %lf",
&realpart(v->v_compdata[i]), &realpart(v->v_compdata[i]),
&imagpart(v->v_compdata[i])) != 2) &imagpart(v->v_compdata[i])) != 2)
getout
GETOUT();
} }
} else if (raw_padded) { } else if (raw_padded) {
if (flags & VF_REAL) { if (flags & VF_REAL) {
if (fscanf(fp, " %lf", if (fscanf(fp, " %lf",
&junk) != 1) &junk) != 1)
getout
GETOUT();
} else { } else {
if (fscanf(fp, " %lf, %lf", if (fscanf(fp, " %lf, %lf",
&junk, &junk) != 2) &junk, &junk) != 2)
getout
GETOUT();
} }
} }
} }
@ -619,27 +642,27 @@ raw_read(char *name) {
if (flags & VF_REAL) { if (flags & VF_REAL) {
if (fread(&v->v_realdata[i], if (fread(&v->v_realdata[i],
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout
GETOUT();
} else { } else {
if (fread(&v->v_compdata[i].cx_real, if (fread(&v->v_compdata[i].cx_real,
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout
GETOUT();
if (fread(&v->v_compdata[i].cx_imag, if (fread(&v->v_compdata[i].cx_imag,
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout
GETOUT();
} }
} else if (raw_padded) { } else if (raw_padded) {
if (flags & VF_REAL) { if (flags & VF_REAL) {
if (fread(&junk, if (fread(&junk,
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout;
GETOUT();
} else { } else {
if (fread(&junk, if (fread(&junk,
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout
GETOUT();
if (fread(&junk, if (fread(&junk,
sizeof (double), 1, fp) != 1) sizeof (double), 1, fp) != 1)
getout
GETOUT();
} }
} }
} }
@ -648,7 +671,7 @@ raw_read(char *name) {
} else { } else {
s = buf; s = buf;
if (is_ascii) { if (is_ascii) {
skip(s);
SKIP(s);
} }
if (*s) { if (*s) {
fprintf(cp_err, fprintf(cp_err,

8
src/frontend/runcoms2.c

@ -27,7 +27,13 @@ Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group
#define RAWBUF_SIZE 32768 #define RAWBUF_SIZE 32768
extern char rawfileBuf[RAWBUF_SIZE]; extern char rawfileBuf[RAWBUF_SIZE];
extern void line_free_x(struct line * deck, bool recurse); extern void line_free_x(struct line * deck, bool recurse);
#define line_free(line,flag) { line_free_x(line,flag); line = NULL; }
#define line_free(line, flag) \
do { \
line_free_x(line, flag); \
line = NULL; \
} while(0)
/* Continue a simulation. If there is non in progress, this is the /* Continue a simulation. If there is non in progress, this is the
* equivalent of "run". * equivalent of "run".

8
src/frontend/subckt.c

@ -74,7 +74,13 @@ Modified: 2000 AlansFixes
#include "numparam/numpaif.h" #include "numparam/numpaif.h"
extern void line_free_x(struct line * deck, bool recurse); extern void line_free_x(struct line * deck, bool recurse);
#define line_free(line, flag) { line_free_x(line, flag); line = NULL; }
#define line_free(line, flag) \
do { \
line_free_x(line, flag); \
line = NULL; \
} while(0)
/* ----- static declarations ----- */ /* ----- static declarations ----- */
struct subs; struct subs;

Loading…
Cancel
Save