Newer
Older
tac2grc / src / tacsrc / ports.py
@lukas lukas on 14 Aug 2022 1 KB initial commit
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)