Boost logo

Boost :

From: John Hunter (jdhunter_at_[hidden])
Date: 2001-08-17 15:29:24


Yet another boost::python question...

I am writing a template based boost::python class generator for
std::vector<T>. I noticed how David did it for vector<float> in
comprehensive.cpp and tried to generalize it because I have lots of
member functions that return vector<T> for user defined types.

The technique works great for built in types, but fails for my user
defined class 'Date'.

I use the VectorPy template class (below) to generate python
extensions like so:

    boost::python::module_builder m("MyModule");
    DatePy date( m );
    VectorPy<float> vf( m, "VectorFloats" );
    VectorPy<int> vi( m, "VectorInts" );
    VectorPy<Date> vd( m, "VectorDates" );

where the VectorPy code and the horribly long compiler message appear
below (all of the compiler errors are generated by the template
instantiation 'template class VectorPy<DateFinancial>;' which is the
last line of VectorPy.cpp.

The only thing in the docs that I have found about potential problems
with user defined types is

   Because the to_python and from_python functions for a user-defined
   class are defined by extension_class<T>, it is important that an
   instantiation of extension_class<T> is visible to any code which
   wraps a C++ function with a T, T*, const T&, etc. parameter or
   return value. In particular, you may want to create all of the
   classes at the top of your module's init function, then def the
   member functions later to avoid problems with inter-class
   dependencies.

Is this related to my problem? I certainly include the header for the
'Date' class before the module init function and VectorPy<Date>
instantiation. Any suggestions for a workaround?

Thanks,
John Hunter
 

-- begin VectorPy.h --

#ifndef _VECTORPY_H
#define _VECTORPY_H

#include <vector>
#include <string>
#include <boost/python/class_builder.hpp>

namespace python = boost::python;
template<typename T>
class VectorPy : public python::class_builder<vector<T> >
{
public:
  VectorPy(python::module_builder& m, const string& className);
};

#endif

-- end VectorPy.h --

-- begin VectorPy.cpp --

#include "Date.h"
#include "VectorPy.h"

template<typename T>
void
v_push_back(std::vector<T>& v, const T& x)
{
  v.push_back(x);
}

template<typename T>
T
v_get(const std::vector<T>& v, const size_t& i)
{
  return v[i];
}

template<typename T>
size_t
v_size(const std::vector<T>& v)
{
  return v.size();
}

template<typename T>
VectorPy<T>::VectorPy(python::module_builder& m, const string& className )
  : boost::python::class_builder<vector<T> >(m, className.c_str() )
{
  
  typedef vector<T> Vector;
  def(python::constructor<>());
  def(v_push_back<T>, "push_back");
  def(v_size<T>, "size");
  def(v_get<T>, "get");
}

//template instantiations -- TODO: write a preprocessor macro for these
// ** floats ** //
template class vector<float>;
template void v_push_back( std::vector<float>&, const float&);
template size_t v_size( const std::vector<float>&);
template float v_get( const std::vector<float>& , const size_t& );
template class VectorPy<float>;

// ** ints ** //
template class vector<int>;
template void v_push_back( std::vector<int>&, const int&);
template size_t v_size( const std::vector<int>&);
template int v_get( const std::vector<int>& , const size_t& );
template class VectorPy<int>;

// ** Dates ** //
template class vector<Date>;
template void v_push_back( std::vector<Date>&, const Date&);
template size_t v_size( const std::vector<Date>&);
template Date v_get( const std::vector<Date>& , const size_t& );
template class VectorPy<Date>;

-- end VectorPy.cpp --

-- begin compile output --

cd /home/guest/jdhunter/c/trade/python/
make
g++ -I. -I.. -I/home/guest/jdhunter/c/mylibs -I/usr/local/include/mysql/ -L/usr/local/include -I/home/guest/jdhunter/c/lib/boost_1_23_0 -I/usr/local/include/python1.6 -fPIC -ftemplate-depth-21 -g -c VectorPy.cpp
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp: In function `struct PyObject * to_python<Date>(const Date &)':
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/caller.hpp:448: instantiated from `boost::python::caller<Date>::call<const vector<Date,allocator<Date> > &, const size_t &>(Date (*)(const vector<Date,allocator<Date> > &, const size_t &), PyObject *, PyObject *)'
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/functions.hpp:69: instantiated from `boost::python::detail::wrapped_function_pointer<Date,Date (*)(const vector<Date,allocator<Date> > &, const unsigned int &)>::do_call(PyObject *, PyObject *) const'
VectorPy.cpp:56: instantiated from here
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:362: no matching function for call to `py_extension_class_converters (boost::python::type<Date>)'
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:192: candidates are: class python_extension_class_converters<vector<float,allocator<float> >,boost::python::detail::held_instance<vector<float,allocator<float> > > > py_extension_class_converters(boost::python::type<vector<float,allocator<float> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:192: class python_extension_class_converters<vector<int,allocator<int> >,boost::python::detail::held_instance<vector<int,allocator<int> > > > py_extension_class_converters(boost::python::type<vector<int,allocator<int> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:192: class python_extension_class_converters<vector<Date,allocator<Date> >,boost::python::detail::held_instance<vector<Date,allocator<Date> > > > py_extension_class_converters(boost::python::type<vector<Date,allocator<Date> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/caller.hpp: In function `static struct PyObject * boost::python::caller<void>::call<vector<Date,allocator<Date> > &, const Date &>(void (*)(vector<Date,allocator<Date> > &, const Date &), PyObject *, PyObject *)':
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/functions.hpp:69: instantiated from `boost::python::detail::wrapped_function_pointer<void,void (*)(vector<Date,allocator<Date> > &, const Date &)>::do_call(PyObject *, PyObject *) const'
VectorPy.cpp:56: instantiated from here
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/caller.hpp:1082: no matching function for call to `from_python (PyObject *&, boost::python::type<const Date &>)'
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:120: candidates are: long int from_python(PyObject *, boost::python::type<long int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:362: long int from_python(PyObject *, boost::python::type<const long int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:124: long unsigned int from_python(PyObject *, boost::python::type<long unsigned int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:397: long unsigned int from_python(PyObject *, boost::python::type<const long unsigned int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:128: int from_python(PyObject *, boost::python::type<int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:352: int from_python(PyObject *, boost::python::type<const int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:132: unsigned int from_python(PyObject *, boost::python::type<unsigned int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:372: unsigned int from_python(PyObject *, boost::python::type<const unsigned int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:136: short int from_python(PyObject *, boost::python::type<short int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:357: short int from_python(PyObject *, boost::python::type<const short int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:140: short unsigned int from_python(PyObject *, boost::python::type<short unsigned int>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:377: short unsigned int from_python(PyObject *, boost::python::type<const short unsigned int &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:144: char from_python(PyObject *, boost::python::type<char>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:382: char from_python(PyObject *, boost::python::type<const char &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:148: signed char from_python(PyObject *, boost::python::type<signed char>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:387: signed char from_python(PyObject *, boost::python::type<const signed char &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:152: unsigned char from_python(PyObject *, boost::python::type<unsigned char>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:392: unsigned char from_python(PyObject *, boost::python::type<const unsigned char &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:156: float from_python(PyObject *, boost::python::type<float>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:347: float from_python(PyObject *, boost::python::type<const float &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:160: double from_python(PyObject *, boost::python::type<double>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:342: double from_python(PyObject *, boost::python::type<const double &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:164: bool from_python(PyObject *, boost::python::type<bool>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:367: bool from_python(PyObject *, boost::python::type<const bool &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:168: void from_python(PyObject *, boost::python::type<void>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:171: const char * from_python(PyObject *, boost::python::type<const char *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:174: class string from_python(PyObject *, boost::python::type<basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:321: class string from_python(PyObject *, boost::python::type<const basic_string<char,string_char_traits<char>,__default_alloc_template<true,0> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:188: class complex<double> from_python(PyObject *, boost::python::type<complex<double> >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:193: class complex<double> from_python(PyObject *, boost::python::type<const complex<double> &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:198: class complex<float> from_python(PyObject *, boost::python::type<complex<float> >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:203: class complex<float> from_python(PyObject *, boost::python::type<const complex<float> &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:332: struct PyObject * from_python(PyObject *, boost::python::type<_object *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/conversions.hpp:337: const char * from_python(PyObject *, boost::python::type<const char *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<_object> from_python(PyObject *, boost::python::type<boost::python::reference<_object> >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<_object> from_python(PyObject *, boost::python::type<const boost::python::reference<_object> &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:301: class boost::python::tuple from_python(PyObject *, boost::python::type<boost::python::tuple>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:304: class boost::python::tuple from_python(PyObject *, boost::python::type<const boost::python::tuple &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:309: class boost::python::list from_python(PyObject *, boost::python::type<boost::python::list>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:312: class boost::python::list from_python(PyObject *, boost::python::type<const boost::python::list &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:317: class boost::python::string from_python(PyObject *, boost::python::type<boost::python::string>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:320: class boost::python::string from_python(PyObject *, boost::python::type<const boost::python::string &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:325: class boost::python::dictionary from_python(PyObject *, boost::python::type<boost::python::dictionary>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/objects.hpp:328: class boost::python::dictionary from_python(PyObject *, boost::python::type<const boost::python::dictionary &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<boost::python::detail::function> from_python(PyObject *, boost::python::type<boost::python::reference<boost::python::detail::function> >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<boost::python::detail::function> from_python(PyObject *, boost::python::type<const boost::python::reference<boost::python::detail::function> &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<boost::python::detail::extension_instance> from_python(PyObject *, boost::python::type<boost::python::reference<boost::python::detail::extension_instance> >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<boost::python::detail::extension_instance> from_python(PyObject *, boost::python::type<const boost::python::reference<boost::python::detail::extension_instance> &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:349: const class boost::shared_ptr<vector<float,allocator<float> > > & from_python(PyObject *, boost::python::type<const boost::shared_ptr<vector<float,allocator<float> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:346: const class boost::shared_ptr<vector<float,allocator<float> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<float,allocator<float> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:343: class boost::shared_ptr<vector<float,allocator<float> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<float,allocator<float> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:337: const class auto_ptr<vector<float,allocator<float> > > & from_python(PyObject *, boost::python::type<const auto_ptr<vector<float,allocator<float> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:334: class auto_ptr<vector<float,allocator<float> > > from_python(PyObject *, boost::python::type<auto_ptr<vector<float,allocator<float> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:331: class auto_ptr<vector<float,allocator<float> > > & from_python(PyObject *, boost::python::type<auto_ptr<vector<float,allocator<float> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:328: const class vector<float,allocator<float> > & from_python(PyObject *, boost::python::type<vector<float,allocator<float> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:324: const class vector<float,allocator<float> > & from_python(PyObject *, boost::python::type<const vector<float,allocator<float> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:320: class vector<float,allocator<float> > & from_python(PyObject *, boost::python::type<vector<float,allocator<float> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:316: class vector<float,allocator<float> > * from_python(PyObject *, boost::python::type<vector<float,allocator<float> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:312: const class vector<float,allocator<float> > * from_python(PyObject *, boost::python::type<const vector<float,allocator<float> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:308: const class vector<float,allocator<float> > * from_python(PyObject *, boost::python::type<const vector<float,allocator<float> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:240: class vector<float,allocator<float> > * from_python(PyObject *, boost::python::type<vector<float,allocator<float> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<boost::python::detail::extension_class<vector<float,allocator<float> >,boost::python::detail::held_instance<vector<float,allocator<float> > > > > from_python(PyObject *, boost::python::type<boost::python::reference<boost::python::detail::extension_class<vector<float,allocator<float> >,boost::python::detail::held_instance<vector<float,allocator<float> > > > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<boost::python::detail::extension_class<vector<float,allocator<float> >,boost::python::detail::held_instance<vector<float,allocator<float> > > > > from_python(PyObject *, boost::python::type<const boost::python::reference<boost::python::detail::extension_class<vector<float,allocator<float> >,boost::python::detail::held_instance<vector<float,allocator<float> > > > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:349: const class boost::shared_ptr<vector<int,allocator<int> > > & from_python(PyObject *, boost::python::type<const boost::shared_ptr<vector<int,allocator<int> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:346: const class boost::shared_ptr<vector<int,allocator<int> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<int,allocator<int> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:343: class boost::shared_ptr<vector<int,allocator<int> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<int,allocator<int> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:337: const class auto_ptr<vector<int,allocator<int> > > & from_python(PyObject *, boost::python::type<const auto_ptr<vector<int,allocator<int> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:334: class auto_ptr<vector<int,allocator<int> > > from_python(PyObject *, boost::python::type<auto_ptr<vector<int,allocator<int> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:331: class auto_ptr<vector<int,allocator<int> > > & from_python(PyObject *, boost::python::type<auto_ptr<vector<int,allocator<int> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:328: const class vector<int,allocator<int> > & from_python(PyObject *, boost::python::type<vector<int,allocator<int> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:324: const class vector<int,allocator<int> > & from_python(PyObject *, boost::python::type<const vector<int,allocator<int> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:320: class vector<int,allocator<int> > & from_python(PyObject *, boost::python::type<vector<int,allocator<int> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:316: class vector<int,allocator<int> > * from_python(PyObject *, boost::python::type<vector<int,allocator<int> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:312: const class vector<int,allocator<int> > * from_python(PyObject *, boost::python::type<const vector<int,allocator<int> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:308: const class vector<int,allocator<int> > * from_python(PyObject *, boost::python::type<const vector<int,allocator<int> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:240: class vector<int,allocator<int> > * from_python(PyObject *, boost::python::type<vector<int,allocator<int> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<boost::python::detail::extension_class<vector<int,allocator<int> >,boost::python::detail::held_instance<vector<int,allocator<int> > > > > from_python(PyObject *, boost::python::type<boost::python::reference<boost::python::detail::extension_class<vector<int,allocator<int> >,boost::python::detail::held_instance<vector<int,allocator<int> > > > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<boost::python::detail::extension_class<vector<int,allocator<int> >,boost::python::detail::held_instance<vector<int,allocator<int> > > > > from_python(PyObject *, boost::python::type<const boost::python::reference<boost::python::detail::extension_class<vector<int,allocator<int> >,boost::python::detail::held_instance<vector<int,allocator<int> > > > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:349: const class boost::shared_ptr<vector<Date,allocator<Date> > > & from_python(PyObject *, boost::python::type<const boost::shared_ptr<vector<Date,allocator<Date> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:346: const class boost::shared_ptr<vector<Date,allocator<Date> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<Date,allocator<Date> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:343: class boost::shared_ptr<vector<Date,allocator<Date> > > & from_python(PyObject *, boost::python::type<boost::shared_ptr<vector<Date,allocator<Date> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:337: const class auto_ptr<vector<Date,allocator<Date> > > & from_python(PyObject *, boost::python::type<const auto_ptr<vector<Date,allocator<Date> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:334: class auto_ptr<vector<Date,allocator<Date> > > from_python(PyObject *, boost::python::type<auto_ptr<vector<Date,allocator<Date> > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:331: class auto_ptr<vector<Date,allocator<Date> > > & from_python(PyObject *, boost::python::type<auto_ptr<vector<Date,allocator<Date> > > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:328: const class vector<Date,allocator<Date> > & from_python(PyObject *, boost::python::type<vector<Date,allocator<Date> > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:324: const class vector<Date,allocator<Date> > & from_python(PyObject *, boost::python::type<const vector<Date,allocator<Date> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:320: class vector<Date,allocator<Date> > & from_python(PyObject *, boost::python::type<vector<Date,allocator<Date> > &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:316: class vector<Date,allocator<Date> > * from_python(PyObject *, boost::python::type<vector<Date,allocator<Date> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:312: const class vector<Date,allocator<Date> > * from_python(PyObject *, boost::python::type<const vector<Date,allocator<Date> > *const &>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:308: const class vector<Date,allocator<Date> > * from_python(PyObject *, boost::python::type<const vector<Date,allocator<Date> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/detail/extension_class.hpp:240: class vector<Date,allocator<Date> > * from_python(PyObject *, boost::python::type<vector<Date,allocator<Date> > *>)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:30: class boost::python::reference<boost::python::detail::extension_class<vector<Date,allocator<Date> >,boost::python::detail::held_instance<vector<Date,allocator<Date> > > > > from_python(PyObject *, boost::python::type<boost::python::reference<boost::python::detail::extension_class<vector<Date,allocator<Date> >,boost::python::detail::held_instance<vector<Date,allocator<Date> > > > > >)
/home/guest/jdhunter/c/lib/boost_1_23_0/boost/python/reference.hpp:27: class boost::python::reference<boost::python::detail::extension_class<vector<Date,allocator<Date> >,boost::python::detail::held_instance<vector<Date,allocator<Date> > > > > from_python(PyObject *, boost::python::type<const boost::python::reference<boost::python::detail::extension_class<vector<Date,allocator<Date> >,boost::python::detail::held_instance<vector<Date,allocator<Date> > > > > &>)
make: *** [VectorPy.o] Error 1

Compilation exited abnormally with code 2 at Fri Aug 17 15:09:42

-- end compile output --

If you made it to here, hats off to you! :)


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk