Re: [boost] how to do from_python in v2?

2002-12-18 Thread David Abrahams
HellcatV HellcatV [EMAIL PROTECTED] writes:

 I've been struggling to port boost v1 to boost v2 and I haven't
 located a nice sort of documentation for it--

What's wrong with

http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/*checkout*/boost/boost/libs/python/doc/index.html?

??
We worked very hard on it!

 luckily i have almost finished figuring it out...and just need to
 figure out how to register from_python

 I have tried and failed to contact the mailing list 

What did you try to do?
Instructions are at http://www.python.org/sigs/c++-sig/

 so I'm hoping you can help me, Dave :-)
 or point me to where I cna find infos

See above.

 so I'm trying to get boost v2 to work with my new project at LBL

 my test code appears to be 100% working ( to_python converted to that
 big macro,  

Huh? That big macro?

 sloppy casts of member functions that included something
 that casted to the true member function has been removed)

I'm still confused, but it sound like you're saying things have
improved.

 but I get a type error when trying to call a function with a tuple
 that really takes a Vector.

 struct Vector {
 float i; float j; float k;
 };

 This is because I have not figured out how to properly define a
 from_python operator in boost v2... I have scoured google and all the
 docs and have only encountered half-debates on what convention to use
 and no solid rules--and I cannot appear to make anything I have tried
 work.

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

Ralf also works at Berkeley Labs, so you have the expert on-site.

 can you point me to some documentation on which functioN I should make
 that takes in a PyObject * and return a Vector  so that I can call
 functions that take a Vector as an argument?

 my old from_python method is as follows:
 inline Vector from_python(PyObject *p,boost::python::typeVector) {
  Vector vec(0,0,0);
  PyArg_ParseTuple(p,fff,vec.i,vec.j,vec.k);
  return vec;
 }
 error checking is not required :-)

 if anyone can help me get this function to work in v2 I believe the
 rest of my code will magically work (because

 the only functions currently failing involve taking IN
 vectors...returning them is accomplished with
 BOOST_PYTHON_TO_PYTHON_BY_VALUE(QVector,
 boost::python::to_python_valueboost::python::tuple ()(bo\
 ost::python::make_tuple((double)x.i,(double)x.j,(double)x.k)));

Ahh, that macro is an implementation detail; I'm not sure that you
should be using it.  I probably should be #undef ing it at the end of
the header.

static void* QVector_convertible(PyObject* p)
{
return PyTuple_Check(p);
}

static void QVector_construct(PyObject* source, rvalue_from_python_stage1_data* 
data)
{
void* const storage = 
((converter::rvalue_from_python_storageQVector*)data)-storage.bytes;
new (storage) QVector();
// Fill in QVector values from source tuple here
// details left to reader.
data-convertible = storage;
}

...
boost::python::converter::registry::insert(QVector_convertible, QVector_construct, 
type_idQVector());


 is the above calling syntax going to be portable to newer versions of
 boost? or am I going to have to scour through millions of header files
 for version 1.30?

Scouring headers is never a good idea.  I recommend reading the docs,
then asking questions.

 anyhow thanks for a great library

You're welcome!

 unfortunately only boost v1 compiles on my macintosh with gcc-3.1
 it appears there is a preprocessing error with gcc-3.1 :-( and I'm not
 sure what to do about it...

 it says: (postprocessed)

   template  typename 0 = mpl::void_ , typename B1 = mpl::void_ ,
 typename B2 = mpl::void_ , typena\
 me B3 = mpl::void_ , typename B4 = mpl::void_ , typename B5 =
 mpl::void_ , typename B6 = mpl::void_\
 , typename B7 = mpl::void_ , typename B8 = mpl::void_ , typename B9 =
 mpl::void_ 
   struct bases : detail::type_list B0 , B1 , B2 , B3 , B4 , B5 , B6 ,
 B7 , B8 , B9 ::type
   {};

 where I think it means B0 instead of just plain ole  0

Ouch!  Yes, that's right.

 I think it's a gcc-3.1 b0rken sign but I don't know how to get around
 it :-/

GCC-3.2.1?

-- 
   David Abrahams
   [EMAIL PROTECTED] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] how to do from_python in v2?

2002-12-18 Thread Paul Mensonides
- Original Message - 
From: David Abrahams [EMAIL PROTECTED]

  unfortunately only boost v1 compiles on my macintosh with gcc-3.1
  it appears there is a preprocessing error with gcc-3.1 :-( and I'm not
  sure what to do about it...
 
  it says: (postprocessed)
 
template  typename 0 = mpl::void_ , typename B1 = mpl::void_ ,
  typename B2 = mpl::void_ , typena\
  me B3 = mpl::void_ , typename B4 = mpl::void_ , typename B5 =
  mpl::void_ , typename B6 = mpl::void_\
  , typename B7 = mpl::void_ , typename B8 = mpl::void_ , typename B9 =
  mpl::void_ 
struct bases : detail::type_list B0 , B1 , B2 , B3 , B4 , B5 , B6 ,
  B7 , B8 , B9 ::type
{};
 
  where I think it means B0 instead of just plain ole  0
 
 Ouch!  Yes, that's right.
 
  I think it's a gcc-3.1 b0rken sign but I don't know how to get around
  it :-/
 
 GCC-3.2.1?

Is this that same definition of B0?  Where is that coming from?

Paul Mensonides
___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] how to do from_python in v2?

2002-12-18 Thread David Abrahams
Paul Mensonides [EMAIL PROTECTED] writes:

 Is this that same definition of B0?  Where is that coming from?

Oh, yeah, that's right!

The mac headers seem to have

#define B0 0

somewhere :(

It's easy enough to check in a workaround, but it would be nice to
track down the cause...

-- 
   David Abrahams
   [EMAIL PROTECTED] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] how to do from_python in v2?

2002-12-18 Thread David Abrahams
David Abrahams [EMAIL PROTECTED] writes:

 Oh, yeah, that's right!

 The mac headers seem to have

 #define B0 0

 somewhere :(

 It's easy enough to check in a workaround, 

Done.

-- 
   David Abrahams
   [EMAIL PROTECTED] * http://www.boost-consulting.com
Boost support, enhancements, training, and commercial distribution

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost



Re: [boost] how to do from_python in v2?

2002-12-18 Thread Paul Mensonides
- Original Message -
From: Harri Hakula [EMAIL PROTECTED]

 On my Jaguar OS X 10.2.2:

 File Space:usr:include:rpcsvc:rex.h; Line 82:  #define B0 0

 Amusingly, next define is
 #define B50 1
 (I guess THAT one has not caused any problems yet...)

Are these macros only used locally in that header?  If so, they should be
undefined.  If not, why on earth are they named B#?  Here's a workaround
will really fix Boost:

#define T 0

;)

Paul Mensonides

___
Unsubscribe  other changes: http://lists.boost.org/mailman/listinfo.cgi/boost