1 /*
2  */
3 
4 #include "graph.h"
5 
6 /******************************************************************************
7 Node management
8 ******************************************************************************/
9 
create_node(char * name,struct eq * eq,enum nodetype nodetype)10 struct node *create_node (char *name, struct eq *eq, enum nodetype nodetype)
11 {
12     struct node *n ;
13     char *s ;
14     struct symtab *p ;
15 
16     p = symtab_get (name) ;
17 
18     s = symtab_to_name (p) ;
19     MOBJ_ALLOC_INSERT (n, nodemobj) ;
20     n->name = s ;
21     n->eq = eq ;
22     n->nodetype = nodetype ;
23     n->linklist = NULL ;
24     symtab_to_node (p) = n ;
25 
26     /* add to equipement node list  */
27     n->enext = NULL;
28     n->eprev = NULL;
29 
30     if(eq->enhead == NULL)
31 	eq->enhead = n;
32     if(eq->entail != NULL)
33     {
34     	eq->entail->enext = n;
35     	n->eprev = eq->entail;
36     }
37 
38     eq->entail = n;
39 
40     return n ;
41 }
42 
new_nodename(char * eqname)43 char *new_nodename (char *eqname)
44 {
45     static int maxindex = 0 ;
46     static char name [MAXLINE] ;
47 
48     do
49     {
50 	sprintf (name, "%s:%d", eqname, ++maxindex) ;
51     } while (symtab_lookup (name) != NULL) ;
52 
53     return name ;
54 }
55