[C++-sig] pyste + wrapping + overloads

John Hunter jdhunter at ace.bsd.uchicago.edu
Mon Nov 8 18:46:19 CET 2004


I am trying to wrap a class method in pyste that has a signature

    void path_storage::add_poly(const double* vertices, unsigned num,
                                bool solid_path, unsigned end_flags)

vertices is a length 2*num array of x,y doubles x0, y0, x1, y1, ....

I am using the following wrapper

  void add_poly_wrapper(agg::path_storage* ps, list vertices, 
			bool solid_path = false,
			unsigned end_flags = agg::path_flags_none) {
    size_t N = extract<size_t>(vertices.attr("length")());
    double * pverts = new double[2*N];
    for (size_t i=0; i<N; i++) {
      tuple xy  = extract<tuple>(vertices[i]);
      *pverts++ = extract<double>(xy[0]);
      *pverts++ = extract<double>(xy[1]);
    }
    pverts -= 2*N;  //rewind
    ps->add_poly(pverts, N, solid_path, end_flags);
    
  }

The first problem I've encountered in pyste is that the standard way of
specifying wrappers

    Include("path_storage_wrap.h")
    PS = Class("agg::path_storage", "agg_path_storage.h")
    set_wrapper(PS.add_poly, "add_poly_wrapper")

doesn't work because there is no PS.add_poly, since pyste defines it
with the overload macro


  BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(agg_path_storage_add_poly_overloads_2_4, add_poly, 2, 4)


How does one specify wrappers for overloaded functions?  I don't know
enough about the overload macro internals to figure out how to
proceed...

Thanks,
JDH

boost_python 1.31.0 with pyste and gccxml-0.6.0



More information about the Cplusplus-sig mailing list