summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/gras/GRAS_Block.i4
-rw-r--r--python/gras/GRAS_HierBlock.i17
2 files changed, 9 insertions, 12 deletions
diff --git a/python/gras/GRAS_Block.i b/python/gras/GRAS_Block.i
index 2aa1166..e5d112a 100644
--- a/python/gras/GRAS_Block.i
+++ b/python/gras/GRAS_Block.i
@@ -227,11 +227,15 @@ def YieldTagIter(iter):
srcid=PMC2Py(t.srcid),
)
+#FIXME major kludge for ref holding
+blocks_ref_container = list()
+
class Block(BlockPython):
def __init__(self, name='Block', in_sig=None, out_sig=None):
BlockPython.__init__(self, name)
self.set_input_signature(in_sig)
self.set_output_signature(out_sig)
+ blocks_ref_container.append(self)
def set_input_signature(self, sig):
self.__in_sig = sig_to_dtype_sig(sig)
diff --git a/python/gras/GRAS_HierBlock.i b/python/gras/GRAS_HierBlock.i
index d81536c..328317c 100644
--- a/python/gras/GRAS_HierBlock.i
+++ b/python/gras/GRAS_HierBlock.i
@@ -135,12 +135,11 @@ def to_element(obj):
try: return obj.shared_to_element()
except: raise Exception('cant coerce obj %s to element'%(obj))
-def internal_connect__(fcn, obj, refs, action, *args):
+def internal_connect__(fcn, obj, *args):
if len(args) == 1:
elem = (args[0])
fcn(obj, elem)
- if elem != to_element(obj): action(refs, elem)
return
for src, sink in zip(args, args[1:]):
@@ -155,30 +154,24 @@ def internal_connect__(fcn, obj, refs, action, *args):
fcn(obj, src, src_index, sink, sink_index)
- #incr/decr the python obj ref counts
- if src != to_element(obj): action(refs, src)
- if sink != to_element(obj): action(refs, sink)
-
class TopBlock(TopBlockPython):
def __init__(self, *args, **kwargs):
TopBlockPython.__init__(self, *args, **kwargs)
- self.__refs = list()
def connect(self, *args):
- return internal_connect__(TopBlockPython.connect, self, self.__refs, list.append, *args)
+ return internal_connect__(TopBlockPython.connect, self, *args)
def disconnect(self, *args):
- return internal_connect__(TopBlockPython.disconnect, self, self.__refs, list.remove, *args)
+ return internal_connect__(TopBlockPython.disconnect, self, *args)
class HierBlock(HierBlockPython):
def __init__(self, *args, **kwargs):
HierBlockPython.__init__(self, *args, **kwargs)
- self.__refs = list()
def connect(self, *args):
- return internal_connect__(HierBlockPython.connect, self, self.__refs, list.append, *args)
+ return internal_connect__(HierBlockPython.connect, self, *args)
def disconnect(self, *args):
- return internal_connect__(HierBlockPython.disconnect, self, self.__refs, list.remove, *args)
+ return internal_connect__(HierBlockPython.disconnect, self, *args)
%}