Hi, I am facing some problem in exposing iterator(using pyplusplus), for this I have created a sample problem(to communicate this problem)
#include<iostream> #include<vector> using namespace std; class A { }; typedef vector< A > vectorA; class B { public: typedef vectorA::iterator iter; iter begin() { return this->aVect.begin(); } private: vectorA aVect; }; B getB() { return B(); } main() { B b(getB()); vectorA::iterator it = b.begin(); } Here in the above example begin() function in class returns vector ::iterator and I want to expose this function but while generating bindings it gives WARNING: __gnu_cxx::__normal_iterator<A*, std::vector<A, std::allocator > > [class] > execution error W1040: The declaration is unexposed, but there are other > declarations, which refer to it. This could cause "no to_python > converter found" run time error. Declarations: > __gnu_cxx::__normal_iterator<A*, std::vector<A, std::allocator > > > B::begin() [member > function] Due to this it gives run time error while using this function. I tried various methods to include it explicitly but it fails. Can you please help, whether I have missed something in my case. Code generator that I used for generating bindings. import sys import os from pyplusplus import module_builder from pyplusplus.module_builder import call_policies from pyplusplus import code_creators from pyplusplus.module_builder.ctypes_decls_dependencies import find_out_dependencies sourceFile = './testIterator.cpp' mb=module_builder.module_builder_t( files = [sourceFile], include_paths = './', indexing_suite_version = 2, #define_symbols = defines ) i=0 depList=[] #depList.append(a) def getDepend(): global i if i < len(depList): try: deps = find_out_dependencies ( [depList[i]] ) for dep in deps: if dep not in depList: depList.append(dep) except: print "No Dependency for class %s", x pass i = i + 1 getDepend() else: return 0 z = getDepend() for dep in depList: dep.include() print dep a = mb.free_function('getB') depList=[a] i = 0 z = getDepend() for dep in depList: dep.include() mb.build_code_creator( module_name = 'testIterator') mb.code_creator.license = '//Boost Software License(http://boost.org/more/license_info.html )' mb.write_module('bindings.cpp') With Regards, Abhishek Srivastava -- View this message in context: http://old.nabble.com/problem-exposing-iterators-tp28912265p28912265.html Sent from the Python - c++-sig mailing list archive at Nabble.com. _______________________________________________ Cplusplus-sig mailing list Cplusplus-sig@python.org http://mail.python.org/mailman/listinfo/cplusplus-sig