You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							47 lines
						
					
					
						
							1.2 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							47 lines
						
					
					
						
							1.2 KiB
						
					
					
				
								/*
							 | 
						|
								    example/issues.cpp -- collection of testcases for miscellaneous issues
							 | 
						|
								
							 | 
						|
								    Copyright (c) 2015 Wenzel Jakob <wenzel@inf.ethz.ch>
							 | 
						|
								
							 | 
						|
								    All rights reserved. Use of this source code is governed by a
							 | 
						|
								    BSD-style license that can be found in the LICENSE file.
							 | 
						|
								*/
							 | 
						|
								
							 | 
						|
								#include "example.h"
							 | 
						|
								
							 | 
						|
								struct Base {
							 | 
						|
								    virtual void dispatch(void) const = 0;
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								struct DispatchIssue : Base {
							 | 
						|
								    virtual void dispatch(void) const {
							 | 
						|
								        PYBIND11_OVERLOAD_PURE(void, Base, dispatch);
							 | 
						|
								    }
							 | 
						|
								};
							 | 
						|
								
							 | 
						|
								void dispatch_issue_go(const Base * b) { b->dispatch(); }
							 | 
						|
								
							 | 
						|
								PYBIND11_PLUGIN(mytest)
							 | 
						|
								{
							 | 
						|
								    pybind11::module m("mytest", "A test");
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								    return m.ptr();
							 | 
						|
								}
							 | 
						|
								void init_issues(py::module &m) {
							 | 
						|
								    py::module m2 = m.def_submodule("issues");
							 | 
						|
								
							 | 
						|
								    // #137: const char* isn't handled properly
							 | 
						|
								    m2.def("print_cchar", [](const char *string) { std::cout << string << std::endl; });
							 | 
						|
								
							 | 
						|
								    // #150: char bindings broken
							 | 
						|
								    m2.def("print_char", [](char c) { std::cout << c << std::endl; });
							 | 
						|
								
							 | 
						|
								    // #159: virtual function dispatch has problems with similar-named functions
							 | 
						|
								    pybind11::class_<DispatchIssue> base(m2, "DispatchIssue");
							 | 
						|
								    base.alias<Base>()
							 | 
						|
								        .def(pybind11::init<>())
							 | 
						|
								        .def("dispatch", &Base::dispatch);
							 | 
						|
								
							 | 
						|
								    m2.def("dispatch_issue_go", &dispatch_issue_go);
							 | 
						|
								}
							 |