home *** CD-ROM | disk | FTP | other *** search
/ gdead.berkeley.edu / gdead.berkeley.edu.tar / gdead.berkeley.edu / pub / cad-tools / ciftomann.tar / Lib / edgeprocs.c < prev    next >
C/C++ Source or Header  |  1988-01-28  |  1KB  |  75 lines

  1. #include "aeledge.h"
  2. #include <stdio.h>
  3.  
  4. char *ProgName;
  5.  
  6. char *malloc();
  7.  
  8. /*
  9.  * Allocate and initialize a edge structure 
  10.  */
  11.  
  12. AEL_EDGEPTR MakeEdge(x,xend,y,sense,next,last)
  13. int x,xend,y,sense;
  14. AEL_EDGEPTR next,last;
  15. {
  16.     AEL_EDGEPTR new;
  17.  
  18.     new = (AEL_EDGE *) malloc (sizeof (AEL_EDGE));
  19.  
  20.     new->x = x;
  21.     new->xend = xend;
  22.     new->y = y;
  23.     new->sense = sense;
  24.     new->next = next;
  25.     new->last = last;
  26.     return(new);
  27. }
  28.  
  29. panic(string)
  30. char *string;
  31. {
  32.     fprintf(stderr,"Panic in %s : %s\n",ProgName,string);
  33.     exit(1);
  34. }
  35.  
  36. /*
  37.  * Insert a edge above the pointer E in the active edge list 
  38.  */
  39. InsertAbove(E,x,xend,y,sense)
  40. AEL_EDGEPTR E;
  41. int x,xend,y,sense;
  42. {
  43.     AEL_EDGEPTR new;
  44.  
  45.     new = MakeEdge(x,xend,y,sense,E,E->last);
  46.  
  47.     E->last->next = new;
  48.     E->last = new;
  49. }
  50.  
  51. /*
  52.  * Remove the edge pointed to by Edge from the active edge list
  53.  * AEList. Check to see if we are trying to remove the end-of-list
  54.  * markers 
  55.  */
  56. Remove(AEList,Edge) 
  57. AEL_LIST AEList;
  58. AEL_EDGEPTR Edge;
  59. {
  60.     if (Edge == AEList.bottom || Edge == AEList.top) 
  61.     panic("Attempt to remove ends of the AEList");
  62.  
  63.     Edge->last->next = Edge->next;
  64.     Edge->next->last = Edge->last;
  65.  
  66.     free(Edge);
  67. }
  68.  
  69. PrintEdge(E)
  70. AEL_EDGEPTR E;
  71. {
  72.     fprintf(stderr,"x=%d,xend=%d,y=%d,sense=%d,next %d,last %d\n",E->x,E->xend,
  73.         E->y,E->sense,E->next,E->last);
  74. }
  75.