pybind11/example/example-opaque-types.py

51 lines
1.1 KiB
Python
Raw Normal View History

2016-03-15 14:05:40 +00:00
from __future__ import print_function
import sys
sys.path.append('.')
from example import StringList, print_opaque_list
2016-04-22 14:52:15 +00:00
from example import ClassWithSTLVecProperty
from example import return_void_ptr, print_void_ptr
from example import return_null_str, print_null_str
from example import return_unique_ptr
from example import ExampleMandA
2016-03-15 14:05:40 +00:00
2016-04-22 14:52:15 +00:00
#####
2016-03-15 14:05:40 +00:00
l = StringList()
l.push_back("Element 1")
l.push_back("Element 2")
print_opaque_list(l)
print("Back element is %s" % l.back())
2016-04-28 14:25:24 +00:00
for i, k in enumerate(l):
print("%i/%i : %s" % (i + 1, len(l), k))
2016-03-15 14:05:40 +00:00
l.pop_back()
print_opaque_list(l)
2016-04-22 14:52:15 +00:00
#####
cvp = ClassWithSTLVecProperty()
print_opaque_list(cvp.stringList)
cvp.stringList = l
cvp.stringList.push_back("Element 3")
print_opaque_list(cvp.stringList)
#####
print_void_ptr(return_void_ptr())
print_void_ptr(ExampleMandA()) # Should also work for other C++ types
try:
print_void_ptr([1, 2, 3]) # This should not work
except Exception as e:
print("Caught expected exception: " + str(e))
print(return_null_str())
print_null_str(return_null_str())
2016-04-22 14:52:15 +00:00
#####
2016-04-28 14:25:24 +00:00
ptr = return_unique_ptr()
print(ptr)
print_opaque_list(ptr)