diff options
author | Josh Blum | 2012-09-03 05:44:53 -0700 |
---|---|---|
committer | Josh Blum | 2012-09-03 05:44:53 -0700 |
commit | d3c303b2f78e3657dc89e23478316502cedc6e7b (patch) | |
tree | 08d1e2f9262a59349f5042cbe5c3eab2638cfa6d /swig | |
parent | b9d92f31d7eee9bf1707fa622b6bea531e41c693 (diff) | |
download | sandhi-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.i | 9 |
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): |