1 /*- 2 * %sccs.include.proprietary.c% 3 */ 4 5 #ifndef lint 6 static char sccsid[] = "@(#)1.node.c 8.1 (Berkeley) 06/06/93"; 7 #endif /* not lint */ 8 9 #include <stdio.h> 10 #include "def.h" 11 #include "1.incl.h" 12 13 makenode(type,addimp,addcom, labe,arcnum,arctype,arclab) 14 LOGICAL addimp,addcom; 15 int type, arctype[], arcnum; 16 long arclab[], labe; 17 { 18 int i; 19 VERT num; 20 21 ASSERT(arcsper[type] < 0 || arcnum == arcsper[type], makenode); 22 num = create(type,arcnum); 23 24 if (addimp) fiximp(num,labe); 25 26 for (i = 0; i < arcnum; ++i) 27 { 28 if (arctype[i] == -2) 29 addref(arclab[i],&ARC(num,i)); 30 else 31 ARC(num,i) = arctype[i]; 32 } 33 34 35 if (hascom[type] ) 36 { 37 if (!addcom || endcom < begline) 38 BEGCOM(num) = UNDEFINED; 39 else 40 BEGCOM(num) = begchar - rtnbeg; 41 } 42 return(num); 43 } 44 45 46 47 48 49 fiximp(num,labe) /* fix implicit links, check nesting */ 50 VERT num; 51 long labe; 52 { 53 fixvalue(implicit, num); /* set implicit links to this node */ 54 clear(implicit); 55 if(labe != implicit) fixvalue(labe, num); 56 } 57