summaryrefslogtreecommitdiff
path: root/grc/python
diff options
context:
space:
mode:
authorSebastian Koslowski <koslowski@kit.edu>2013-11-25 17:39:27 +0100
committerSebastian Koslowski <koslowski@kit.edu>2013-11-29 12:37:12 +0100
commitce4f279d84b0d7e64114da75a0abe669fb4c7c97 (patch)
treec771de5b0d7cda4e0e47d4cb3ffe9692375dff2a /grc/python
parent303ff1703c832a87d6083dfe4632adacf11523be (diff)
grc: patches for 'allow varying number of message ports' (WIP)
Diffstat (limited to 'grc/python')
-rw-r--r--grc/python/Block.py25
1 files changed, 10 insertions, 15 deletions
diff --git a/grc/python/Block.py b/grc/python/Block.py
index 42599914a1..d8aabd2867 100644
--- a/grc/python/Block.py
+++ b/grc/python/Block.py
@@ -101,20 +101,14 @@ class Block(_Block, _GUIBlock):
#restore integer contiguity after insertion
#rectify the port names with the index
self.back_ofthe_bus(ports);
- n = 0
- last_basename = ''
+ current_master_port_name = '' # name of the currently expanded master port
+ n = 0 # master port index
for i, port in enumerate(ports):
port._key = str(i)
port._name = port._n['name']
- # add an index to the basename
if port.get_nports() > 1 and not port._type == 'bus':
- # basename = name without digits
- basename = ''.join([c for c in port._name if not c.isdigit()])
- if basename == last_basename:
- n += 1
- else:
- last_basename = basename
- n = 0
+ n = n + 1 if port._name == current_master_port_name else 0 # next master port --> reset.
+ current_master_port_name = port._name # remember last master port name
port._name += str(n)
def insert_port(get_ports, get_port, key):
@@ -132,12 +126,11 @@ class Block(_Block, _GUIBlock):
get_ports().remove(port)
rectify(get_ports())
- def get_master_ports(lst):
+ def get_master_ports(get_ports):
port_basenames = set()
master_ports = list()
- for p in lst:
- n = p._name
- base_n = ''.join([c for c in n if not c.isdigit()])
+ for p in get_ports():
+ base_n = ''.join([c for c in p._name if not c.isdigit()])
if not base_n in port_basenames:
master_ports.append(p)
port_basenames.add(base_n)
@@ -148,7 +141,9 @@ class Block(_Block, _GUIBlock):
(self.get_sources, self.get_source),
(self.get_sinks, self.get_sink),
):
- master_ports = get_master_ports(get_ports())
+ master_ports2 = get_master_ports(get_ports)
+ master_ports = filter(lambda p: p.get_nports(), get_ports())
+ assert master_ports == master_ports2
for i, master_port in enumerate(master_ports):
nports = master_port.get_nports()
if not nports: