class Ports: def __init__(self): self.labels = [] self.labelSizes = {} def mapName(self, position, name, index): self.labels += [0] * (position+1 - len(self.labels)) self.labels[position] = name if not name in self.labelSizes: self.labelSizes[name] = 0 self.labelSizes[name] = max(self.labelSizes[name], index+1) def getRealPort(self, originalPort): labelsDone = [] for i in range(min(len(self.labels),originalPort)): label = self.labels[i] if label != 0 and label in labelsDone: continue labelsDone.append(label) return len(labelsDone) - 1 def getIODescription(self, block): result = "" labelsDone = [] for i in range(len(self.labels)): label = self.labels[i] if label != 0 and label in labelsDone: continue labelsDone.append(label) if label == 0: result += "\\\\n%s: unknown" % i elif self.labelSizes[label] == 1: result += "\\\\n%s: %s" % (i, label) else: result += "\\\\n%s: %s[%s]" % (i, label, self.labelSizes[label]) return result def ensureLength(self, count): self.labels += [0] * (count - len(self.labels)) def getRealCount(self): labelsDone = [] for label in self.labels: if label != 0 and label in labelsDone: continue labelsDone.append(label) return len(labelsDone)