| 2130 | |
| 2131 | |
| 2132 | def sortvarnames(vars): |
| 2133 | indep = [] |
| 2134 | dep = [] |
| 2135 | for v in list(vars.keys()): |
| 2136 | if 'depend' in vars[v] and vars[v]['depend']: |
| 2137 | dep.append(v) |
| 2138 | else: |
| 2139 | indep.append(v) |
| 2140 | n = len(dep) |
| 2141 | i = 0 |
| 2142 | while dep: # XXX: How to catch dependence cycles correctly? |
| 2143 | v = dep[0] |
| 2144 | fl = 0 |
| 2145 | for w in dep[1:]: |
| 2146 | if w in vars[v]['depend']: |
| 2147 | fl = 1 |
| 2148 | break |
| 2149 | if fl: |
| 2150 | dep = dep[1:] + [v] |
| 2151 | i = i + 1 |
| 2152 | if i > n: |
| 2153 | errmess('sortvarnames: failed to compute dependencies because' |
| 2154 | ' of cyclic dependencies between ' |
| 2155 | + ', '.join(dep) + '\n') |
| 2156 | indep = indep + dep |
| 2157 | break |
| 2158 | else: |
| 2159 | indep.append(v) |
| 2160 | dep = dep[1:] |
| 2161 | n = len(dep) |
| 2162 | i = 0 |
| 2163 | return indep |
| 2164 | |
| 2165 | |
| 2166 | def analyzecommon(block): |