[C++-sig] extractor

Mike Rovner mike at bindkey.com
Thu Jan 23 23:28:52 CET 2003

I'm trying to implement an extractor.
Unfortunately I couldn't find an example of it.
Please point me to a simple one.

My code:
#include <string>
#include <vector>
#include <boost/python.hpp>
using namespace boost::python;

template <class T>
struct vec_extractor
  static std::vector<T>& execute(PyObject* obj)
    int size=PySequence_Size(obj);
    std::vector<T> *vec=new std::vector<T>(size);
    for(int i=0; i<size; ++i)
    return *vec;

static std::string test_ext(std::vector<bool>& v)
  std::string cout("[");
  for(int i=0; i<v.size(); ++i)
    cout += (v[i]? 'T': 'F') << ' ';
  cout += ']';
  //delete &v;
  return cout;


  def("test", test_ext);

dies in execute, because it get an invalid obj pointer(0x1).
In normalized_extractor::execute(pyobj) I got PyObj just fine,
but return from
template <class U>
inline U& void_ptr_to_reference(
    void const volatile* p,
{ return *(U*)p;}
gives me an 1.

Can you please direct me a little bit futher.


PS. I'm studying
ython/doc/v2/reference.html every minute and the reason I'm asking is my
lack of understanding. :(

More information about the Cplusplus-sig mailing list