Entity.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/python
  2. # vim: set fileencoding=utf8
  3. # Created:20080211
  4. # By Jeff Connelly
  5. import Port
  6. class Entity(object):
  7. def __init__(self, name, ports):
  8. """Create a new black box entity.
  9. name: name of entity
  10. ports: a sequence of Port objects
  11. """
  12. self.name = name
  13. self.IN = []
  14. self.OUT = []
  15. self.INOUT = []
  16. for p in ports:
  17. if p.direction == "in":
  18. self.IN.append(p)
  19. elif p.direction == "out":
  20. self.OUT.append(p)
  21. else:
  22. self.INOUT.append(p)
  23. def __init__(self, name, inports = [], outports = [], inoutports = []):
  24. """Overloaded constructor, takes the port names from the
  25. input lists.
  26. name: name of the entity
  27. inports: list of names for the in ports
  28. outports: list of names for the out ports
  29. inoutports: list of names for the inout ports
  30. """
  31. self.name = name
  32. self.IN = []
  33. self.OUT = []
  34. self.INOUT = []
  35. for p in inports:
  36. self.IN.append(Port.Port(p, Port.IN, None))
  37. for p in outports:
  38. self.OUT.append(Port.Port(p, Port.OUT, None))
  39. for p in inoutports:
  40. self.INOUT.append(Port.Port(p, Port.INOUT, None))
  41. def __str__(self):
  42. s = "<Entity: %s, %d ports" % (self.name, len(self.IN))
  43. i = 0
  44. for p in self.IN:
  45. i += 1
  46. s += "\n%d. %s" % (i, p)
  47. for p in self.OUT:
  48. i += 1
  49. s += "\n%d. %s" % (i, p)
  50. for p in self.INOUT:
  51. i += 1
  52. s += "\n%d. %s" % (i, p)
  53. s += ">"
  54. return s
  55. if __name__ == "__main__":
  56. a = Port.Port("a", Port.IN, None)
  57. b = Port.Port("b", Port.IN, None)
  58. c = Port.Port("c", Port.OUT, None)
  59. d = Entity("d", ["1", "2"], ["3"], ["4"])
  60. max = Entity("max", [a,b,c])
  61. print max, d