Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / vcd / vcd_parse_core.c
1 /****************************************************************************/
2 /* */
3 /* Chaine de CAO & VLSI AVERTEC */
4 /* */
5 /* Produit : AVERTEC global tools */
6 /* Fichier : vcd_parse_core.c */
7 /* */
8 /* © copyright 2000 AVERTEC */
9 /* Tous droits reserves */
10 /* */
11 /* Auteur(s) : Antony PINTO */
12 /* */
13 /****************************************************************************/
14
15 #include "vcd_parse_core.h"
16
17 static ht *CDL_TO_VCD = NULL;
18 static ht *VCD_TO_CDL = NULL;
19 static int PARSE_DONE = 0;
20
21 static int readline(FILE *fd);
22
23 /****************************************************************************/
24 /*{{{ Internal functions */
25 /****************************************************************************/
26 /*{{{ readline() */
27 /* */
28 /* */
29 /****************************************************************************/
30 static inline int readline(FILE *fd)
31 {
32 char bufcdl[1024], bufvcd[1024], *cdl, *vcd;
33
34 if (fscanf(fd,"%s -> %s\n",bufvcd,bufcdl) == 2)
35 {
36 vcd = namealloc(bufvcd);
37 cdl = namealloc(bufcdl);
38 vcd_newVCDToCDLName(vcd,cdl);
39 vcd_newCDLToVCDName(cdl,vcd);
40 }
41
42 return !feof(fd);
43 }
44
45 /*}}}************************************************************************/
46 /*}}}************************************************************************/
47 /*{{{ External functions */
48 /****************************************************************************/
49 /*{{{ vcd_parse_core() */
50 /* */
51 /* */
52 /****************************************************************************/
53 void vcd_parse_core(char *filename, char *ext)
54 {
55 FILE *fd;
56
57 if (VCD_TO_CDL)
58 delht(VCD_TO_CDL);
59 if (CDL_TO_VCD)
60 delht(CDL_TO_VCD);
61
62 VCD_TO_CDL = addht(100);
63 CDL_TO_VCD = addht(100);
64 fd = mbkfopen(filename,ext,"r");
65
66 while (readline(fd))
67 ;
68 PARSE_DONE = 1;
69 }
70
71 /*}}}************************************************************************/
72 /*{{{ vcd_cdl_parsed() */
73 /* */
74 /* */
75 /****************************************************************************/
76 int vcd_cdl_parsed(void)
77 {
78 return PARSE_DONE;
79 }
80
81 /*}}}************************************************************************/
82 /*{{{ vcd_newCDLToVCDName() */
83 /* */
84 /* */
85 /****************************************************************************/
86 void vcd_newCDLToVCDName(char *cdl, char *vcd)
87 {
88 addhtitem(CDL_TO_VCD,cdl,(long)vcd);
89 }
90
91 /*}}}************************************************************************/
92 /*{{{ vcd_getVCDFromCDLName() */
93 /* */
94 /* */
95 /****************************************************************************/
96 char *vcd_getVCDFromCDLName(char *cdl)
97 {
98 char *res;
99
100 if (! CDL_TO_VCD ||
101 (res = (char *)gethtitem(CDL_TO_VCD,cdl)) == (char *)EMPTYHT)
102 return NULL;
103 else
104 return res;
105 }
106
107 /*}}}************************************************************************/
108 /*{{{ vcd_newVCDToCDLName() */
109 /* */
110 /* */
111 /****************************************************************************/
112 void vcd_newVCDToCDLName(char *vcd, char *cdl)
113 {
114 addhtitem(VCD_TO_CDL,vcd,(long)cdl);
115 }
116
117 /*}}}************************************************************************/
118 /*{{{ vcd_getCDLFromVCDName() */
119 /* */
120 /* */
121 /****************************************************************************/
122 char *vcd_getCDLFromVCDName(char *vcd)
123 {
124 char *res;
125
126 if (!VCD_TO_CDL ||
127 (res = (char *)gethtitem(VCD_TO_CDL,vcd)) == (char *)EMPTYHT)
128 return vcd;
129 else
130 return res;
131 }
132
133 /*}}}************************************************************************/
134 /*}}}************************************************************************/
135 #if 0
136 /*{{{ Test functions */
137 /****************************************************************************/
138 /*{{{ */
139 /* */
140 /* */
141 /****************************************************************************/
142 int main(int argc, char *argv[])
143 {
144 vcd_parse_core(argv[1]);
145
146 return 0;
147 }
148
149 /*}}}************************************************************************/
150 /*}}}************************************************************************/
151 #endif