summaryrefslogtreecommitdiff
path: root/swig
diff options
context:
space:
mode:
authorJosh Blum2012-09-03 05:44:53 -0700
committerJosh Blum2012-09-03 05:44:53 -0700
commitd3c303b2f78e3657dc89e23478316502cedc6e7b (patch)
tree08d1e2f9262a59349f5042cbe5c3eab2638cfa6d /swig
parentb9d92f31d7eee9bf1707fa622b6bea531e41c693 (diff)
downloadsandhi-d3c303b2f78e3657dc89e23478316502cedc6e7b.tar.gz
sandhi-d3c303b2f78e3657dc89e23478316502cedc6e7b.tar.bz2
sandhi-d3c303b2f78e3657dc89e23478316502cedc6e7b.zip
created shared_to_element and use shared_from_this
Allows element to be used in a derived class w/ or without a shared pointer. Python/C++
Diffstat (limited to 'swig')
-rw-r--r--swig/sw_runtime.i9
1 files changed, 7 insertions, 2 deletions
diff --git a/swig/sw_runtime.i b/swig/sw_runtime.i
index e8df947..a25cbaa 100644
--- a/swig/sw_runtime.i
+++ b/swig/sw_runtime.i
@@ -51,8 +51,13 @@ struct TopBlockPython : TopBlock
def internal_connect__(fcn, obj, *args):
+ def to_element(obj):
+ if isinstance(obj, Element): return obj
+ try: return obj.shared_to_element()
+ except: raise Exception('cant coerce obj %s to element'%(obj))
+
if len(args) == 1:
- fcn(obj, args[0].get_base())
+ fcn(obj, to_element(args[0]))
return
for src, sink in zip(args, args[1:]):
@@ -60,7 +65,7 @@ def internal_connect__(fcn, obj, *args):
except: src_index = 0
try: sink, sink_index = sink
except: sink_index = 0
- fcn(obj, src.get_base(), src_index, sink.get_base(), sink_index)
+ fcn(obj, to_element(src), src_index, to_element(sink), sink_index)
class top_block(TopBlockPython):
def __init__(self, *args, **kwargs):