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: JCC for Java -> C++ and initializeClass
Date Mon, 02 Sep 2013 08:00:06 GMT

On Sep 2, 2013, at 9:56, Toivo Henningsson <toivo.henningsson@modelon.com> wrote:

>> -----Original Message-----
>> From: Andi Vajda [mailto:vajda@apache.org]
>> Sent: den 30 augusti 2013 16:11
>> To: Toivo Henningsson
>> Cc: pylucene-dev@lucene.apache.org
>> Subject: Re: JCC for Java -> C++ and initializeClass
>> 
>> 
>> On Aug 30, 2013, at 15:55, Toivo Henningsson
>> <toivo.henningsson@modelon.com> wrote:
>> 
>>>> -----Original Message-----
>>>> From: Andi Vajda [mailto:vajda@apache.org]
>>>> Sent: den 30 augusti 2013 15:13
>>>> To: pylucene-dev@lucene.apache.org
>>>> Subject: Re: JCC for Java -> C++ and initializeClass
>>>> 
>>>> 
>>>> On Fri, 30 Aug 2013, Toivo Henningsson wrote:
>>>> 
>>>>> I've been using JCC successfully for a number of months for wrapping
>>>>> Java
>>>> code to use in a C++ program.
>>>>> My question is about initializeClass. Right now, I'm calling
>>>>> 
>>>>> mypackage::MyClass::initializeClass(false);
>>>>> 
>>>>> on some of my classes during initialization (in the C++ code), as I
>>>>> got the
>>>> impression that I am supposed to do. But it doesn't seem to make a
>>>> difference if I remove those calls. Is it still required, and if it is, for
what?
>>>> 
>>>> initializeClass() is called for you, lazily, when the C++ wrapper
>>>> class constructor is called for the first time.
>>>> You can see this in the generated .h files.
>>> 
>>> Ok, great!
>>> 
>>> So it's only if I need to use something inside of a class before creating any
>> instances that I need to call initializeClass()?
>> 
>> Thinking about this, from C++, there may be holes. From Python, when import
>> on the Python wrapper is called, initializeClass() ends up being called too.
> 
> I looked a bit at the source (generated and otherwise), and my conclusion was that
> * initializeClass() looks up class, method, field ids and static fields ==> it needs
to be called before
>   * calling methods on the class (also static ones)
>   * accessing fields in the class
> * intializeClass() is called when
>   * a wrapper instance is created
>   * a static method is called
> I think that this leaves only the case when accessing a static field, which indeed is
a hole.
> 
> My only question now is: Do you plan to keep the other three cases (calling static/nonstatic
methods, access to instance fields) safe when it comes to initializeClass?
> Then I can write my code under that assumption.

Yes, this has been quite stable and I don't anticipate any changes there.

Andi..

> 
> / Toivo
> 
> Toivo Henningsson, PhD
> Software Engineer
> Simulation & Optimization R&D
> 
> Phone direct: +46 46 286 22 11
> Email: toivo.henningsson@modelon.com
> 
> 
> 
> Modelon AB
> Ideon Science Park
> SE-223 70 Lund, Sweden Phone: +46 46 286 2200
> Fax: +46 46 286 2201
> Web: http://www.modelon.com
> This email and any attachments are intended solely for the use of the individual or entity
to whom it is addressed and may be confidential and/or privileged. If you are not one of the
named recipients or have received this email in error, (i) you should not read, disclose,
or copy it, (ii) please notify sender of your receipt by reply email and delete this email
and all attachments, (iii) Modelon does not accept or assume any liability or responsibility
for any use of or reliance on this email.
> 

Mime
View raw message