[C++-sig] Weave Scipy Inline C++

David Abrahams dave at boost-consulting.com
Sat Sep 14 23:28:03 CEST 2002


From: "Mark Evans" <lists at UltimateG.com>


>
> http://www.scipy.org/site_content/weave
>
> Can Boost do anything like this?  These folks are planning to use SCXX
> while I am trying to get them to use Boost Python for C++ interfacing.

Boost doesn't provide any facilities for on-demand compilation of C++ code
from Python, if that's what you're getting at.

> They keep talking about Pythonic C++ classes, but I think that
> limiting inline C++ to such classes will severely limit Weave.

Sorry, I don't understand what you're saying.

> Their statement is:
>
> Message: 5
> From: "eric jones" <eric at enthought.com>
> To: <scipy-dev at scipy.net>
> Subject: RE: [SciPy-dev] Boost vs CXX and SCXX
> Date: Fri, 13 Sep 2002 14:53:26 -0500
> Reply-To: scipy-dev at scipy.net
>
> Hey Mark,
>
> Like you, I'd pick boost or SWIG (which has made *huge* leaps in the
> last year for C++ stuff) for wrapping a C++ library.  But that isn't
> what we're choosing here.  Weave allows you to inline C++ code within
> Python.  It is nice to have a representation of Python objects in the
> C++ code that look Pythonic.  C++ classes allow this sort of thing.

Well, Boost.Python v2 does let you have a reasonably Pythonic
representation of Python objects from C++. See the June progress report at

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/libs/
python/doc/v2/Jun2002.html#object

for details...but I don't see how that relates the the examples below.


> CXX wrappers allowed this sort of thing:
>
> >>> import weave
> >>> a= [1,2]
> >>> weave.inline('a[0] = Py::Int(3)',['a'])
> >>> a[0]
> [3, 2]
>
> Now with SCXX, we have:
>
> >>> import weave
> >>> a = [1,2]
> >>> weave.inline('a[0] = PWONumber(3);',['a'])
> >>> a
> [3, 2]
>
> I doubt boost would be much different or superior to either of these
> in terms of readability or use.
>
> As I said before, most of the tools boost provides help with wrapping
> code and aren't beneficial in the context of weave.  All we're looking
> for is a few measly classes for wrapping lists, dicts, and tuples --
> although callable objects, files, and modules are other potential
> targets.  If we can extract these easily from boost, they compile
> easily on everything, and they offer some benefits over these other two
> approachs *in the context of weave*, then its worth considering a
> change.  I'm happy to look at an experimental patch. :-)

Are you trying to change what the weave folks are doing?
Hmm, why?


-----------------------------------------------------------
           David Abrahams * Boost Consulting
dave at boost-consulting.com * http://www.boost-consulting.com






More information about the Cplusplus-sig mailing list