[C++-sig] Boost tuple example? (original) (raw)
Ralf W. Grosse-Kunstleve rwgk at yahoo.com
Fri Dec 9 13:42:29 CET 2005
- Previous message: [C++-sig] Boost tuple example?
- Next message: [C++-sig] Boost tuple example?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
--- Matt <mjkeyes at sbcglobal.net> wrote:
void SetValues(handle <> hObject) { object oObj(hObject);
I'd make this
void SetValues(object& oObj) {
tuple Values("value 1", 2, 3.0);
Does this work? I was thinking you need
tuple Values = make_tuple("value 1", 2, 3.0);
but I am not sure.
//call a python function to set the values, etc... in oObj }
void GetValues(handle <>hObject) { object oObj(hObject);
Same as above:
void GetValues(object& oObj) {
Or if you are expecting a tuple this may be even better:
void GetValues(tuple oValues)
tuple oValues; //call Python function to retrieve a tuple object into oValues //not quite sure what this would look like - i know //tuple is an object, but should i try/catch a call to a python //function into a tuple variable?
try {
I don't think it is advisable to use try + catch() here. Just let the exception propagate through to Python.
const char * szVal = extract<const char *>(oValues[0]); int nVal = extract(oValues[1]); double nDblVal = extract(oValues[2]);
I believe this works on most compilers, but not all. I always do it like this:
const char * szVal = extract<const char *>(oValues[0])();
I.e. with an additional "()" at the end. Similar for the two other extract<> statements.
} catch(...) { PyErrPrint(); } }
Does that seem reasonable? Also, is there an easy way to determine the length of a tuple in C++?
David insisted on not giving us .size(), much to my dismay. Therefore you have to say:
#include <boost/python/detail/api_placeholder.hpp>
and then:
boost::python::len(obj)
David: I still believe we should add .size() to tuple, list, str. The current solution is a real productivity killer; you won't believe how much time I spent/wasted over the years digging out that silly include above again and again. Purity is not always a virtue.
Cheers, Ralf
Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com
- Previous message: [C++-sig] Boost tuple example?
- Next message: [C++-sig] Boost tuple example?
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]