diff options
author | Travis Oliphant <oliphant@enthought.com> | 2005-09-26 20:20:16 +0000 |
---|---|---|
committer | Travis Oliphant <oliphant@enthought.com> | 2005-09-26 20:20:16 +0000 |
commit | 45d01a4be1c4221132ba46d687e6af3a8df3329b (patch) | |
tree | ce3be5290e918def7c7187e747c5460193b0ca85 /scipy/weave/examples/object.py | |
parent | ccd1c3db37672627aa4fe0fdb5437f5dddc0fe86 (diff) | |
download | numpy-45d01a4be1c4221132ba46d687e6af3a8df3329b.tar.gz |
Moved weave
Diffstat (limited to 'scipy/weave/examples/object.py')
-rw-r--r-- | scipy/weave/examples/object.py | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/scipy/weave/examples/object.py b/scipy/weave/examples/object.py new file mode 100644 index 000000000..b69adbbe6 --- /dev/null +++ b/scipy/weave/examples/object.py @@ -0,0 +1,51 @@ +# h:\wrk\scipy\weave\examples>python object.py +# initial val: 1 +# inc result: 2 +# after set attr: 5 + +import weave + +#---------------------------------------------------------------------------- +# get/set attribute and call methods example +#---------------------------------------------------------------------------- + +class foo: + def __init__(self): + self.val = 1 + def inc(self,amount): + self.val += 1 + return self.val +obj = foo() +code = """ + int i = obj.attr("val"); + std::cout << "initial val: " << i << std::endl; + + py::tuple args(1); + args[0] = 2; + i = obj.mcall("inc",args); + std::cout << "inc result: " << i << std::endl; + + obj.set_attr("val",5); + i = obj.attr("val"); + std::cout << "after set attr: " << i << std::endl; + """ +weave.inline(code,['obj']) + +#---------------------------------------------------------------------------- +# indexing of values. +#---------------------------------------------------------------------------- +from UserList import UserList +obj = UserList([1,[1,2],"hello"]) +code = """ + int i; + // find obj length and accesss each of its items + std::cout << "UserList items: "; + for(i = 0; i < obj.length(); i++) + std::cout << obj[i] << " "; + std::cout << std::endl; + // assign new values to each of its items + for(i = 0; i < obj.length(); i++) + obj[i] = "goodbye"; + """ +weave.inline(code,['obj']) +print "obj with new values:", obj
\ No newline at end of file |