diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/gras/GRAS_Block.i | 4 | ||||
-rw-r--r-- | python/gras/GRAS_HierBlock.i | 17 |
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) %} |