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

Reply via email to