"Bruce Lowery
Could you briefly map out how to expose the std::string methods so that the wrapper looks like a python string?
In my test program, I defined a simple 'class_' as you suggested:
class_std::string("string") ;
However, I don't understand how to properly expose the std::string methods since the python string method arguments are not mirrors of those in std::string class.
For instance, at this point, I could only naively try to define a 'find(sub,first,last)' method in the class_std::string wrapper, in terms of a std:string method, say 'std::string( const char *s, size_type i, size_type n)':
class_std::string("string") .def( "find", &std::string::find ) ;
I don't expect this to compile, much less execute with expected results.
I realize this may be a "newbie" (which I am) question. I have been scanning the extensive documentation, but it's not yet coming together in my head.
You can write "thin wrapper functions" which you can expose. For example: long string_find(std::string& self, python::str sub, long start, long end) { ... } class_std::string("string") .def("find", string_find) ... ; You might find it useful to us a first argument of type python::back_referencestd::string&. From this class you can get the std::string object and the Python object which contains it, so, for example, assuming you had written a __getslice__ method, you could slice the object itself and search in that: long string_find( python::back_referencestd::string& self , python::str sub , long start , long end) { std::string& me = self.get(); // get the string object object sliced = self.source().slice(start,end); // do something with sliced. ... } But then again, this migh be more complication than you really need. HTH, -- David Abrahams dave@boost-consulting.com * http://www.boost-consulting.com Boost support, enhancements, training, and commercial distribution