lucene-pylucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andi Vajda <va...@apache.org>
Subject Re: Typecasting in JCC (i think..)
Date Sat, 28 Jan 2012 22:21:42 GMT

On Sat, 28 Jan 2012, Petrus Hyvönen wrote:

> Hi Andi,
>
> Many many thanks for your answer, using the u'A' worked perfectly! I 
> wouldn't have figured that out myself.

"Use the source, Luke"
/me ducks

Andi..

>
> Big thanks.
>
> Regards
> /Petrus
>
>
>
>
>
>
> On Jan 28, 2012, at 11:05 PM, Andi Vajda wrote:
>
>>
>> Hi Petrus,
>>
>> On Sat, 28 Jan 2012, Petrus Hyvönen wrote:
>>
>>> Thanks for the prompt reply,
>>>
>>> Yes, no difference, it treats it as an int in that case.
>>>
>>> "InvalidArgsError: (<type 'TLE'>, '__init__', (5555, 65, 2000, 1, 'A',
0, 1,..."
>>>
>>> In the error message, it seems like int,float,string are printed
>>> without a type but others are printed with a <type>?
>>
>> According to the source code of _parseArgs in functions.cpp, a char must be passed
with one-character unicode string:
>>
>>          case 'C':           /* char */
>>          {
>>              if (array)
>>              {
>>                  if (arg == Py_None)
>>                      break;
>>                  if (PyObject_TypeCheck(arg, PY_TYPE(JArrayChar)))
>>                      break;
>>              }
>>              else if (PyUnicode_Check(arg) && PyUnicode_GET_SIZE(arg) ==
1)
>>                  break;
>>              return -1;
>>          }
>>
>> Please, try passing u'A' instead of just 'A' to see if that works.
>>
>> I can't think of a reason right now why this was written that way but it was intentional
as the part that extracts the character also expects a one-character unicode string and has
no code to support a plain string.
>>
>> The reasoning was probably that a jchar is a unicode character and thus a unicode
string must be required but I don't see why it couldn't be extended to supporting also a one-character
byte string (a plain str in python 2.x).
>>
>> Andi..
>>
>>
>>>
>>> Regards
>>> /Petrus
>>>
>>>
>>> On Sat, Jan 28, 2012 at 6:26 PM, Andi Vajda <vajda@apache.org> wrote:
>>>>
>>>> On Jan 28, 2012, at 9:15, Petrus Hyvönen <petrus.hyvonen@gmail.com>
wrote:
>>>>
>>>>> Hi all,
>>>>>
>>>>> I have a problem which I think is due to typecasting,
>>>>>
>>>>> I have wrapped a function that has following input types:
>>>>>
>>>>> TLE(jint, jchar, jint, jint, const ::java::lang::String &, jint,
jint,
>>>>> const ::org::orekit::time::AbsoluteDate &, jdouble, jdouble, jdouble,
>>>>> jdouble, jdouble, jdouble, jdouble, jdouble, jint, jdouble);
>>>>>
>>>>> I have been trying all kind of stuff to call it from python, but get
>>>>>
>>>>> InvalidArgsError: (<type 'TLE'>, '__init__', (5555, JArray<char>u'U',
>>>>> 2000, 1, 'A', 0, 1, <AbsoluteDate: 2012-01-26T11:00:00.000>,
>>>>> 0.0011421088155377755, 1.5670255537196003e-12, 0.0, 0.0,
>>>>> 0.7059490305174144, 5.583519461969352, 4.184206970170655,
>>>>> 0.7002697291314248, 0, 0.0007279))
>>>>>
>>>>> (in different kind of fashion depending on how far my tests has gone)
>>>>>
>>>>> My feeling now is that there is something with the input type jchar
>>>>> and java String. Both are actually single characters that I want to
>>>>> send, but in python I use (as a start) 'A' syntax for both. Do I need
>>>>> to typecast it to a jchar? I tried in the example above to cast it
>>>>> using JArray_char but no success.
>>>>>
>>>>> How does JCC differ between when i want to send 'A' as a char and as
a
>>>>> string? or does it try it as both?
>>>>
>>>> Have you tried sending 'A' as 65, its ascii code ? ord('A').
>>>>
>>>> Andi..
>>>>
>>>>>
>>>>> Many thanks for any comment,
>>>>> Best regards
>>>>> /Petrus
>>>
>>>
>>>
>>> --
>>> _____________________________________________
>>> Petrus Hyvönen, Uppsala, Sweden
>>> Mobile Phone/SMS:+46 73 803 19 00
>
> _____________________________________________
> Petrus Hyvönen, Space Engineer, Uppsala, Sweden
> Mobile Phone/SMS:+46 73 803 1900
>
>
>
>
Mime
  • Unnamed multipart/mixed (inline, None, 0 bytes)
View raw message