Hi Noel, Great! Many thanks for your quick response and fix. Regards, Mingyue
2011-09-27 ------------------------------------------------ Mingyue Zheng, Ph.D. Drug Discovery and Design Center (DDDC) Box 1201, Shanghai Institute of Materia Medica. No. 555 Rd. Zuchongzhi, Shanghai, China Tel: 86-021-50806600-1308 Email: myzh...@mail.shcnc.ac.cn ------------------------------------------------ FROM:Noel O'Boyle DATE:2011-09-27 02:40:50 TO:Mingyue Zheng CC:openbabel-discuss SUBJECT:Re: Re: [Open Babel] Fw: Interfacing C/C++ and Python with openbabel.py After checking this some more, I found this (http://old.nabble.com/Printing-std%3Astring---return-param-in-python-td30668781.html), and saw that it should work for OB as it is returning a const reference to a std::string: const std::string& GetSMARTS() const The problem is that this seems to be shadowed by the non-const version which is also there. Once I made a change to the header file, it seems to pick up on the const version fine: >>> import pybel >>> print pybel.Smarts("CC").obsmarts.GetSMARTS() CC If you want to see the details of what I changed, go to http://openbabel.svn.sourceforge.net/viewvc/openbabel/openbabel/trunk/include/openbabel/parsmart.h?r1=4610&r2=4609&pathrev=4610 - Noel On 26 September 2011 17:32, Mingyue Zheng <myzh...@mail.shcnc.ac.cn> wrote: > Ok, the script I pasted is just an example and meaningless. I just want to > know if there is any convenient way to unwrap a swig object like that, > without changing the API. > Thanks for your reply. > > 2011-09-27 > ------------------------------------------------ > Mingyue Zheng, Ph.D. > Drug Discovery and Design Center (DDDC) > Box 1201, Shanghai Institute of Materia Medica. > No. 555 Rd. Zuchongzhi, Shanghai, China > Tel: 86-021-50806600-1308 > Email: myzh...@mail.shcnc.ac.cn > > ------------------------------------------------ > > FROM:Noel O'Boyle > DATE:2011-09-27 00:10:51 > TO:Mingyue Zheng > CC:openbabel-discuss > SUBJECT:Re: [Open Babel] Fw: Interfacing C/C++ and Python with openbabel.py > > Is there a reason you need to call GetString()? I would recommend that > you work around the problem by storing the strings in the Python > script along with the corresponding OBSmartsPattern? > > The underlying problem is that pointers to objects are not wrapped by > the code. This is most easily fixed by changing the API. However, I > don't like to do this if the problem can be worked around by the user. > > - Noel > > On 26 September 2011 16:59, Mingyue Zheng <myzh...@mail.shcnc.ac.cn> wrote: >> Dear all, >> openbabel.py provides an interface to use python scripts to call C/C++ >> functions of open babel, >> in which C built-in datatypes are mapped into the closest Python equivalent. >> for example: >> int, long, short <---> Python integers. >> float, double <---> Python floats >> char, char * <---> Python strings. >> However, if a C++ function returns a variable with other datatypes, for >> example: std:string, How can we deal with that? >> Below is an example: >> >>>>import openbabel as ob >>>>pat=ob.OBSmartsPatten() >>>>pat.Init('c1ccccc1') >>>>pat_str=pat.GetSMARTS() >>>>print pat_str >> >> Since the function GetSMARTS() returns a std::string, >> the printed result is not "c1ccccc1", >> but a swig object like sth below: >> "_20748c03_p_std__string" >>>>pat_str >> <Swig Object of type 'std::string *' at 0x03957AD0> >> >> Does anyone know how to deal with this problem? >> >> 2011-09-26 >> ------------------------------------------------ >> Mingyue Zheng, Ph.D. >> Drug Discovery and Design Center (DDDC) >> Box 1201, Shanghai Institute of Materia Medica. >> No. 555 Rd. Zuchongzhi, Shanghai, China >> Tel: 86-021-50806600-1308 >> Email: myzh...@mail.shcnc.ac.cn >> >> ------------------------------------------------ >> >> >> ------------------------------------------------------------------------------ >> All the data continuously generated in your IT infrastructure contains a >> definitive record of customers, application performance, security >> threats, fraudulent activity and more. Splunk takes this data and makes >> sense of it. Business sense. IT sense. Common sense. >> http://p.sf.net/sfu/splunk-d2dcopy1 >> _______________________________________________ >> OpenBabel-discuss mailing list >> OpenBabel-discuss@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/openbabel-discuss >> > ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity and more. Splunk takes this data and makes sense of it. Business sense. IT sense. Common sense. http://p.sf.net/sfu/splunk-d2dcopy1 _______________________________________________ OpenBabel-discuss mailing list OpenBabel-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/openbabel-discuss