[C++-sig] How to deal with array?
Clark
foo.Clark at gmail.com
Sat Jul 2 19:39:28 CEST 2005
Thanks. I'll try it. And can you give me somthing about other solutions?
On Fri, Jul 01, 2005 at 12:01:32AM -0700, Ralf W. Grosse-Kunstleve wrote:
> There are a number of possible solutions. One that I explored recently and is
> particularly non-intrusive goes like this:
>
> 1. Copy this file to your space (remove the #include <gltbx/...> if it is still
> version 1.1.1.1) and change the namespaces to your liking:
>
>
> http://cvs.sourceforge.net/viewcvs.py/cctbx/gltbx/pointer_args_bpl.h?view=markup
>
> 2. Implement a thin wrapper like this (untested):
>
> void
> A_set(A& self, boost::python::object const& py_n)
> {
> boost_python::converter<int> n_proxy("n", py_n, 4, false);
> int* n = n_proxy.get();
> A.set(n);
> }
>
> 3. Wrap like this (also untested):
>
> class_<A>("A")
> .def("set", A_set)
> ;
>
> HTH,
> Ralf
>
> --- Clark <foo.Clark at gmail.com> wrote:
>
> > Hi,
> > Can I expose a C++ array to python with Boost.Python? And Can I use a
> > python list conveniently in C++?
> >
> > For example, there is a C++ class as follows
> > class A
> > {
> > private:
> > int c[4];
> > public:
> > int d[10];
> >
> > void set(int *n)
> > {
> > for(int i = 0; i < 4; ++i)
> > c[i] = n[i]
> > }
> > }
> > and I want use class A above in Python like this
> > a = A()
> > print a.d[2]
> > n = [1, 2, ,3, 4]
> > a.set(n)
> >
> > Can you give me some hints?
>
>
> __________________________________________________
> Do You Yahoo!?
> Tired of spam? Yahoo! Mail has the best spam protection around
> http://mail.yahoo.com
> _______________________________________________
> C++-sig mailing list
> C++-sig at python.org
> http://mail.python.org/mailman/listinfo/c++-sig
More information about the Cplusplus-sig
mailing list