From: Markus H. <ma...@ti...> - 2009-10-30 18:36:18
Attachments:
smime.p7s
|
Hi, take this code convert it to objc and run it: public class Test{ Object thisIsNotInitialized; void test(){ if(thisIsNotInitialized==null) System.out.println("null"); } public static void main(String[] args){ new Test().test(); } } I would expect to get "null" printed to the console. But that doesn't happen. The generated if is something like thos: if (_op1.o != [NSNull null]) goto label0; So it checks for [NSNull null]. But _op1.o contains 0x0 and the check is false. So I would guess that the initialization code of the ObjC variables has to be changed so that they contain [NSNull null] and not 0x0 by default. Hope you get what I mean. Markus |
From: Panayotis K. <pan...@pa...> - 2009-10-30 19:11:57
|
On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: > Hi, > > take this code convert it to objc and run it: > > public class Test{ > Object thisIsNotInitialized; > > void test(){ > if(thisIsNotInitialized==null) > System.out.println("null"); > } > > public static void main(String[] args){ > new Test().test(); > } > } > > I would expect to get "null" printed to the console. But that > doesn't happen. The generated if is something like thos: > > if (_op1.o != [NSNull null]) goto label0; > > So it checks for [NSNull null]. But _op1.o contains 0x0 and the > check is false. So I would guess that the initialization code of the > ObjC variables has to be changed so that they contain [NSNull null] > and not 0x0 by default. > > Hope you get what I mean. If a selector returns nil, what is seen in Java? |
From: Arno P. <ar...@pu...> - 2009-10-30 19:41:13
|
this is a tricky issue. Objective-C initializes member variables to 'nil' by default (which, I believe, is represented by 0x0). However, in XMLVM we cannot map Java's null to Objective-C's nil, because nil is not accepted as an argument to some data structures (e.g., NSArray, NSDictionary, etc). That is why we map null to [NSNull null]. Now, very unfortunate, you cannot do something like this in Objective-C: @interface Foo { id ref = [NSNull null]; } @end This means, you have do some fancy code generation. This is a known issue in XMLVM. In the meantime, you can explicitly initialize Java members such as: public class Test { Object ref = null; ... Arno Panayotis Katsaloulis wrote: > On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: > >> Hi, >> >> take this code convert it to objc and run it: >> >> public class Test{ >> Object thisIsNotInitialized; >> >> void test(){ >> if(thisIsNotInitialized==null) >> System.out.println("null"); >> } >> >> public static void main(String[] args){ >> new Test().test(); >> } >> } >> >> I would expect to get "null" printed to the console. But that >> doesn't happen. The generated if is something like thos: >> >> if (_op1.o != [NSNull null]) goto label0; >> >> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >> check is false. So I would guess that the initialization code of the >> ObjC variables has to be changed so that they contain [NSNull null] >> and not 0x0 by default. >> >> Hope you get what I mean. > > > > If a selector returns nil, what is seen in Java? > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > xmlvm-users mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-users |
From: Markus H. <ma...@ti...> - 2009-10-31 16:01:28
Attachments:
smime.p7s
|
Hi, what about this patch: @@ -183,11 +183,35 @@ int main(int argc, char* argv[]) <xsl:text> @implementation </xsl:text> <xsl:value-of select="vm:fixname(@package)"/> <xsl:text>_</xsl:text> <xsl:value-of select="vm:fixname(@name)"/> - + + + <!-- Emit constructor --> + <xsl:text> +-(id)init +{ + if (self = [super init]) + { +</xsl:text> + <!-- Emit declarations for all non-static object fields --> + <xsl:for-each select="vm:field[not(@isStatic = 'true') and vm:isObjectRef(@type)]"> + <xsl:text> </xsl:text> + <xsl:value-of select="vm:fixname(../@package)"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="vm:fixname(../@name)"/> + <xsl:text>_</xsl:text> + <xsl:value-of select="vm:fixname(@name)"/> + <xsl:text>=[NSNull null]; +</xsl:text> + </xsl:for-each> +<xsl:text> } + return self; +} +</xsl:text> + <!-- Emit destructor --> <xsl:text>; - (void) dealloc; { This creates a constructor in the ObjC-class and fills all instance variables of any Object-type with [NSNull null]. This seems to work in my tests, but I don't know if it might break anything. Markus Am 30.10.2009 um 20:18 schrieb Arno Puder: > > this is a tricky issue. Objective-C initializes member variables to > 'nil' by default (which, I believe, is represented by 0x0). However, > in > XMLVM we cannot map Java's null to Objective-C's nil, because nil is > not > accepted as an argument to some data structures (e.g., NSArray, > NSDictionary, etc). That is why we map null to [NSNull null]. > > Now, very unfortunate, you cannot do something like this in > Objective-C: > > @interface Foo { > id ref = [NSNull null]; > } > @end > > This means, you have do some fancy code generation. This is a known > issue in XMLVM. In the meantime, you can explicitly initialize Java > members such as: > > public class Test { > Object ref = null; > ... > > Arno > > > Panayotis Katsaloulis wrote: >> On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: >> >>> Hi, >>> >>> take this code convert it to objc and run it: >>> >>> public class Test{ >>> Object thisIsNotInitialized; >>> >>> void test(){ >>> if(thisIsNotInitialized==null) >>> System.out.println("null"); >>> } >>> >>> public static void main(String[] args){ >>> new Test().test(); >>> } >>> } >>> >>> I would expect to get "null" printed to the console. But that >>> doesn't happen. The generated if is something like thos: >>> >>> if (_op1.o != [NSNull null]) goto label0; >>> >>> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >>> check is false. So I would guess that the initialization code of the >>> ObjC variables has to be changed so that they contain [NSNull null] >>> and not 0x0 by default. >>> >>> Hope you get what I mean. >> >> >> >> If a selector returns nil, what is seen in Java? >> ------------------------------------------------------------------------------ >> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart >> your >> developing skills, take BlackBerry mobile applications to market >> and stay >> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >> http://p.sf.net/sfu/devconference >> _______________________________________________ >> xmlvm-users mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlvm-users > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart > your > developing skills, take BlackBerry mobile applications to market and > stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > _______________________________________________ > xmlvm-users mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-users |
From: Wolfgang K. <wol...@xm...> - 2009-11-03 16:02:51
|
Markus, sorry for the late reply. At a first glance I don't see problems with the patch you sent. Did you try running the demo applications shipped with XMLVM to make sure that the patch did not break something or did you only try running your small sample program? -- Wolfgang Markus Heberling wrote: > Hi, > > what about this patch: > > @@ -183,11 +183,35 @@ int main(int argc, char* argv[]) > <xsl:text> > @implementation </xsl:text> > <xsl:value-of select="vm:fixname(@package)"/> > <xsl:text>_</xsl:text> > <xsl:value-of select="vm:fixname(@name)"/> > - > + > + > + <!-- Emit constructor --> > + <xsl:text> > +-(id)init > +{ > + if (self = [super init]) > + { > +</xsl:text> > + <!-- Emit declarations for all non-static object fields --> > + <xsl:for-each select="vm:field[not(@isStatic = 'true') and > vm:isObjectRef(@type)]"> > + <xsl:text> </xsl:text> > + <xsl:value-of select="vm:fixname(../@package)"/> > + <xsl:text>_</xsl:text> > + <xsl:value-of select="vm:fixname(../@name)"/> > + <xsl:text>_</xsl:text> > + <xsl:value-of select="vm:fixname(@name)"/> > + <xsl:text>=[NSNull null]; > +</xsl:text> > + </xsl:for-each> > +<xsl:text> } > + return self; > +} > +</xsl:text> > + > <!-- Emit destructor --> > <xsl:text>; > > - (void) dealloc; > { > > > This creates a constructor in the ObjC-class and fills all instance > variables of any Object-type with [NSNull null]. > > This seems to work in my tests, but I don't know if it might break > anything. > > Markus > > Am 30.10.2009 um 20:18 schrieb Arno Puder: > >> >> this is a tricky issue. Objective-C initializes member variables to >> 'nil' by default (which, I believe, is represented by 0x0). However, in >> XMLVM we cannot map Java's null to Objective-C's nil, because nil is not >> accepted as an argument to some data structures (e.g., NSArray, >> NSDictionary, etc). That is why we map null to [NSNull null]. >> >> Now, very unfortunate, you cannot do something like this in Objective-C: >> >> @interface Foo { >> id ref = [NSNull null]; >> } >> @end >> >> This means, you have do some fancy code generation. This is a known >> issue in XMLVM. In the meantime, you can explicitly initialize Java >> members such as: >> >> public class Test { >> Object ref = null; >> ... >> >> Arno >> >> >> Panayotis Katsaloulis wrote: >>> On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: >>> >>>> Hi, >>>> >>>> take this code convert it to objc and run it: >>>> >>>> public class Test{ >>>> Object thisIsNotInitialized; >>>> >>>> void test(){ >>>> if(thisIsNotInitialized==null) >>>> System.out.println("null"); >>>> } >>>> >>>> public static void main(String[] args){ >>>> new Test().test(); >>>> } >>>> } >>>> >>>> I would expect to get "null" printed to the console. But that >>>> doesn't happen. The generated if is something like thos: >>>> >>>> if (_op1.o != [NSNull null]) goto label0; >>>> >>>> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >>>> check is false. So I would guess that the initialization code of the >>>> ObjC variables has to be changed so that they contain [NSNull null] >>>> and not 0x0 by default. >>>> >>>> Hope you get what I mean. >>> >>> >>> >>> If a selector returns nil, what is seen in Java? >>> ------------------------------------------------------------------------------ >>> >>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>> is the only developer event you need to attend this year. Jumpstart >>> your >>> developing skills, take BlackBerry mobile applications to market and >>> stay >>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>> http://p.sf.net/sfu/devconference >>> _______________________________________________ >>> xmlvm-users mailing list >>> xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >> >> ------------------------------------------------------------------------------ >> >> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart your >> developing skills, take BlackBerry mobile applications to market and >> stay >> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >> http://p.sf.net/sfu/devconference >> _______________________________________________ >> xmlvm-users mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlvm-users > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > ------------------------------------------------------------------------ > > _______________________________________________ > xmlvm-users mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-users > |
From: Markus H. <ma...@ti...> - 2009-11-03 16:09:34
|
Hi, I have tested it with a port of microemulator (http://microemu.org). Worked fine for me there. Will try out the xmlvm demos tonight, too. Markus Von meinem iPhone gesendet Am 03.11.2009 um 16:38 schrieb Wolfgang Korn <wol...@xm...>: > Markus, > > sorry for the late reply. At a first glance I don't see problems > with the patch you sent. Did you try running the demo applications > shipped with XMLVM to make sure that the patch did not break > something or did you only try running your small sample program? > > -- Wolfgang > > > Markus Heberling wrote: >> >> Hi, >> >> what about this patch: >> >> @@ -183,11 +183,35 @@ int main(int argc, char* argv[]) >> <xsl:text> >> @implementation </xsl:text> >> <xsl:value-of select="vm:fixname(@package)"/> >> <xsl:text>_</xsl:text> >> <xsl:value-of select="vm:fixname(@name)"/> >> - >> + >> + >> + <!-- Emit constructor --> >> + <xsl:text> >> +-(id)init >> +{ >> + if (self = [super init]) >> + { >> +</xsl:text> >> + <!-- Emit declarations for all non-static object fields --> >> + <xsl:for-each select="vm:field[not(@isStatic = 'true') and >> vm:isObjectRef(@type)]"> >> + <xsl:text> </xsl:text> >> + <xsl:value-of select="vm:fixname(../@package)"/> >> + <xsl:text>_</xsl:text> >> + <xsl:value-of select="vm:fixname(../@name)"/> >> + <xsl:text>_</xsl:text> >> + <xsl:value-of select="vm:fixname(@name)"/> >> + <xsl:text>=[NSNull null]; >> +</xsl:text> >> + </xsl:for-each> >> +<xsl:text> } >> + return self; >> +} >> +</xsl:text> >> + >> <!-- Emit destructor --> >> <xsl:text>; >> >> - (void) dealloc; >> { >> >> >> This creates a constructor in the ObjC-class and fills all instance >> variables of any Object-type with [NSNull null]. >> >> This seems to work in my tests, but I don't know if it might break >> anything. >> >> Markus >> >> Am 30.10.2009 um 20:18 schrieb Arno Puder: >> >>> >>> this is a tricky issue. Objective-C initializes member variables to >>> 'nil' by default (which, I believe, is represented by 0x0). >>> However, in >>> XMLVM we cannot map Java's null to Objective-C's nil, because nil >>> is not >>> accepted as an argument to some data structures (e.g., NSArray, >>> NSDictionary, etc). That is why we map null to [NSNull null]. >>> >>> Now, very unfortunate, you cannot do something like this in >>> Objective-C: >>> >>> @interface Foo { >>> id ref = [NSNull null]; >>> } >>> @end >>> >>> This means, you have do some fancy code generation. This is a known >>> issue in XMLVM. In the meantime, you can explicitly initialize Java >>> members such as: >>> >>> public class Test { >>> Object ref = null; >>> ... >>> >>> Arno >>> >>> >>> Panayotis Katsaloulis wrote: >>>> On 30 Οκτ 2009, at 8:35 μ.μ., Markus >>>> Heberling wrote: >>>> >>>>> Hi, >>>>> >>>>> take this code convert it to objc and run it: >>>>> >>>>> public class Test{ >>>>> Object thisIsNotInitialized; >>>>> >>>>> void test(){ >>>>> if(thisIsNotInitialized==null) >>>>> System.out.println("null"); >>>>> } >>>>> >>>>> public static void main(String[] args){ >>>>> new Test().test(); >>>>> } >>>>> } >>>>> >>>>> I would expect to get "null" printed to the console. But that >>>>> doesn't happen. The generated if is something like thos: >>>>> >>>>> if (_op1.o != [NSNull null]) goto label0; >>>>> >>>>> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >>>>> check is false. So I would guess that the initialization code of >>>>> the >>>>> ObjC variables has to be changed so that they contain [NSNull >>>>> null] >>>>> and not 0x0 by default. >>>>> >>>>> Hope you get what I mean. >>>> >>>> >>>> >>>> If a selector returns nil, what is seen in Java? >>>> --- >>>> --- >>>> --- >>>> --- >>>> ------------------------------------------------------------------ >>>> Come build with us! The BlackBerry(R) Developer Conference in SF, >>>> CA >>>> is the only developer event you need to attend this year. >>>> Jumpstart your >>>> developing skills, take BlackBerry mobile applications to market >>>> and stay >>>> ahead of the curve. Join us from November 9 - 12, 2009. Register >>>> now! >>>> http://p.sf.net/sfu/devconference >>>> _______________________________________________ >>>> xmlvm-users mailing list >>>> xml...@li... >>>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>> >>> --- >>> --- >>> --- >>> --- >>> ------------------------------------------------------------------ >>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>> is the only developer event you need to attend this year. >>> Jumpstart your >>> developing skills, take BlackBerry mobile applications to market >>> and stay >>> ahead of the curve. Join us from November 9 - 12, 2009. Register >>> now! >>> http://p.sf.net/sfu/devconference >>> _______________________________________________ >>> xmlvm-users mailing list >>> xml...@li... >>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >> >> >> --- >> --- >> --- >> --------------------------------------------------------------------- >> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >> is the only developer event you need to attend this year. Jumpstart >> your >> developing skills, take BlackBerry mobile applications to market >> and stay >> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >> http://p.sf.net/sfu/devconference >> >> _______________________________________________ >> xmlvm-users mailing list >> xml...@li... >> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >> > > |
From: Arno P. <ar...@pu...> - 2009-11-03 16:55:13
|
Guys: sorry for the late reply from my side. To add the initialization in the Objective-C default constructor is a clever idea. I will take Markus patch and make some modifications to it (also generate the declaration of the default constructor in the header file and default initialization of static member variables). I hope I'll get to that sometime today. Arno Markus Heberling wrote: > Hi, > > I have tested it with a port of microemulator (http://microemu.org). > Worked fine for me there. Will try out the xmlvm demos tonight, too. > > Markus > > Von meinem iPhone gesendet > > Am 03.11.2009 um 16:38 schrieb Wolfgang Korn <wol...@xm... > <mailto:wol...@xm...>>: > >> Markus, >> >> sorry for the late reply. At a first glance I don't see problems with >> the patch you sent. Did you try running the demo applications shipped >> with XMLVM to make sure that the patch did not break something or did >> you only try running your small sample program? >> >> -- Wolfgang >> >> >> Markus Heberling wrote: >>> Hi, >>> >>> what about this patch: >>> >>> @@ -183,11 +183,35 @@ int main(int argc, char* argv[]) >>> <xsl:text> >>> @implementation </xsl:text> >>> <xsl:value-of select="vm:fixname(@package)"/> >>> <xsl:text>_</xsl:text> >>> <xsl:value-of select="vm:fixname(@name)"/> >>> - >>> + >>> + >>> + <!-- Emit constructor --> >>> + <xsl:text> >>> +-(id)init >>> +{ >>> + if (self = [super init]) >>> + { >>> +</xsl:text> >>> + <!-- Emit declarations for all non-static object fields --> >>> + <xsl:for-each select="vm:field[not(@isStatic = 'true') and >>> vm:isObjectRef(@type)]"> >>> + <xsl:text> </xsl:text> >>> + <xsl:value-of select="vm:fixname(../@package)"/> >>> + <xsl:text>_</xsl:text> >>> + <xsl:value-of select="vm:fixname(../@name)"/> >>> + <xsl:text>_</xsl:text> >>> + <xsl:value-of select="vm:fixname(@name)"/> >>> + <xsl:text>=[NSNull null]; >>> +</xsl:text> >>> + </xsl:for-each> >>> +<xsl:text> } >>> + return self; >>> +} >>> +</xsl:text> >>> + >>> <!-- Emit destructor --> >>> <xsl:text>; >>> >>> - (void) dealloc; >>> { >>> >>> >>> This creates a constructor in the ObjC-class and fills all instance >>> variables of any Object-type with [NSNull null]. >>> >>> This seems to work in my tests, but I don't know if it might break >>> anything. >>> >>> Markus >>> >>> Am 30.10.2009 um 20:18 schrieb Arno Puder: >>> >>>> >>>> this is a tricky issue. Objective-C initializes member variables to >>>> 'nil' by default (which, I believe, is represented by 0x0). However, in >>>> XMLVM we cannot map Java's null to Objective-C's nil, because nil is >>>> not >>>> accepted as an argument to some data structures (e.g., NSArray, >>>> NSDictionary, etc). That is why we map null to [NSNull null]. >>>> >>>> Now, very unfortunate, you cannot do something like this in >>>> Objective-C: >>>> >>>> @interface Foo { >>>> id ref = [NSNull null]; >>>> } >>>> @end >>>> >>>> This means, you have do some fancy code generation. This is a known >>>> issue in XMLVM. In the meantime, you can explicitly initialize Java >>>> members such as: >>>> >>>> public class Test { >>>> Object ref = null; >>>> ... >>>> >>>> Arno >>>> >>>> >>>> Panayotis Katsaloulis wrote: >>>>> On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> take this code convert it to objc and run it: >>>>>> >>>>>> public class Test{ >>>>>> Object thisIsNotInitialized; >>>>>> >>>>>> void test(){ >>>>>> if(thisIsNotInitialized==null) >>>>>> System.out.println("null"); >>>>>> } >>>>>> >>>>>> public static void main(String[] args){ >>>>>> new Test().test(); >>>>>> } >>>>>> } >>>>>> >>>>>> I would expect to get "null" printed to the console. But that >>>>>> doesn't happen. The generated if is something like thos: >>>>>> >>>>>> if (_op1.o != [NSNull null]) goto label0; >>>>>> >>>>>> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >>>>>> check is false. So I would guess that the initialization code of the >>>>>> ObjC variables has to be changed so that they contain [NSNull null] >>>>>> and not 0x0 by default. >>>>>> >>>>>> Hope you get what I mean. >>>>> >>>>> >>>>> >>>>> If a selector returns nil, what is seen in Java? >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>>>> is the only developer event you need to attend this year. Jumpstart >>>>> your >>>>> developing skills, take BlackBerry mobile applications to market >>>>> and stay >>>>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>>>> http://p.sf.net/sfu/devconference >>>>> _______________________________________________ >>>>> xmlvm-users mailing list >>>>> xml...@li... >>>>> <mailto:xml...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>>> is the only developer event you need to attend this year. Jumpstart >>>> your >>>> developing skills, take BlackBerry mobile applications to market and >>>> stay >>>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>>> http://p.sf.net/sfu/devconference >>>> _______________________________________________ >>>> xmlvm-users mailing list >>>> xml...@li... >>>> <mailto:xml...@li...> >>>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------------ >>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>> is the only developer event you need to attend this year. Jumpstart your >>> developing skills, take BlackBerry mobile applications to market and stay >>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>> http://p.sf.net/sfu/devconference >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> xmlvm-users mailing list >>> xml...@li... <mailto:xml...@li...> >>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>> >> >> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > > > ------------------------------------------------------------------------ > > _______________________________________________ > xmlvm-users mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-users |
From: Arno P. <ar...@pu...> - 2009-11-04 02:20:11
|
OK, I just committed a fix for this problem. Static members were a little tricker but it should work now. The XMLVM demos work. Arno Markus Heberling wrote: > Hi, > > I have tested it with a port of microemulator (http://microemu.org). > Worked fine for me there. Will try out the xmlvm demos tonight, too. > > Markus > > Von meinem iPhone gesendet > > Am 03.11.2009 um 16:38 schrieb Wolfgang Korn <wol...@xm... > <mailto:wol...@xm...>>: > >> Markus, >> >> sorry for the late reply. At a first glance I don't see problems with >> the patch you sent. Did you try running the demo applications shipped >> with XMLVM to make sure that the patch did not break something or did >> you only try running your small sample program? >> >> -- Wolfgang >> >> >> Markus Heberling wrote: >>> Hi, >>> >>> what about this patch: >>> >>> @@ -183,11 +183,35 @@ int main(int argc, char* argv[]) >>> <xsl:text> >>> @implementation </xsl:text> >>> <xsl:value-of select="vm:fixname(@package)"/> >>> <xsl:text>_</xsl:text> >>> <xsl:value-of select="vm:fixname(@name)"/> >>> - >>> + >>> + >>> + <!-- Emit constructor --> >>> + <xsl:text> >>> +-(id)init >>> +{ >>> + if (self = [super init]) >>> + { >>> +</xsl:text> >>> + <!-- Emit declarations for all non-static object fields --> >>> + <xsl:for-each select="vm:field[not(@isStatic = 'true') and >>> vm:isObjectRef(@type)]"> >>> + <xsl:text> </xsl:text> >>> + <xsl:value-of select="vm:fixname(../@package)"/> >>> + <xsl:text>_</xsl:text> >>> + <xsl:value-of select="vm:fixname(../@name)"/> >>> + <xsl:text>_</xsl:text> >>> + <xsl:value-of select="vm:fixname(@name)"/> >>> + <xsl:text>=[NSNull null]; >>> +</xsl:text> >>> + </xsl:for-each> >>> +<xsl:text> } >>> + return self; >>> +} >>> +</xsl:text> >>> + >>> <!-- Emit destructor --> >>> <xsl:text>; >>> >>> - (void) dealloc; >>> { >>> >>> >>> This creates a constructor in the ObjC-class and fills all instance >>> variables of any Object-type with [NSNull null]. >>> >>> This seems to work in my tests, but I don't know if it might break >>> anything. >>> >>> Markus >>> >>> Am 30.10.2009 um 20:18 schrieb Arno Puder: >>> >>>> >>>> this is a tricky issue. Objective-C initializes member variables to >>>> 'nil' by default (which, I believe, is represented by 0x0). However, in >>>> XMLVM we cannot map Java's null to Objective-C's nil, because nil is >>>> not >>>> accepted as an argument to some data structures (e.g., NSArray, >>>> NSDictionary, etc). That is why we map null to [NSNull null]. >>>> >>>> Now, very unfortunate, you cannot do something like this in >>>> Objective-C: >>>> >>>> @interface Foo { >>>> id ref = [NSNull null]; >>>> } >>>> @end >>>> >>>> This means, you have do some fancy code generation. This is a known >>>> issue in XMLVM. In the meantime, you can explicitly initialize Java >>>> members such as: >>>> >>>> public class Test { >>>> Object ref = null; >>>> ... >>>> >>>> Arno >>>> >>>> >>>> Panayotis Katsaloulis wrote: >>>>> On 30 Οκτ 2009, at 8:35 μ.μ., Markus Heberling wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> take this code convert it to objc and run it: >>>>>> >>>>>> public class Test{ >>>>>> Object thisIsNotInitialized; >>>>>> >>>>>> void test(){ >>>>>> if(thisIsNotInitialized==null) >>>>>> System.out.println("null"); >>>>>> } >>>>>> >>>>>> public static void main(String[] args){ >>>>>> new Test().test(); >>>>>> } >>>>>> } >>>>>> >>>>>> I would expect to get "null" printed to the console. But that >>>>>> doesn't happen. The generated if is something like thos: >>>>>> >>>>>> if (_op1.o != [NSNull null]) goto label0; >>>>>> >>>>>> So it checks for [NSNull null]. But _op1.o contains 0x0 and the >>>>>> check is false. So I would guess that the initialization code of the >>>>>> ObjC variables has to be changed so that they contain [NSNull null] >>>>>> and not 0x0 by default. >>>>>> >>>>>> Hope you get what I mean. >>>>> >>>>> >>>>> >>>>> If a selector returns nil, what is seen in Java? >>>>> ------------------------------------------------------------------------------ >>>>> >>>>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>>>> is the only developer event you need to attend this year. Jumpstart >>>>> your >>>>> developing skills, take BlackBerry mobile applications to market >>>>> and stay >>>>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>>>> http://p.sf.net/sfu/devconference >>>>> _______________________________________________ >>>>> xmlvm-users mailing list >>>>> xml...@li... >>>>> <mailto:xml...@li...> >>>>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>>> >>>> ------------------------------------------------------------------------------ >>>> >>>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>>> is the only developer event you need to attend this year. Jumpstart >>>> your >>>> developing skills, take BlackBerry mobile applications to market and >>>> stay >>>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>>> http://p.sf.net/sfu/devconference >>>> _______________________________________________ >>>> xmlvm-users mailing list >>>> xml...@li... >>>> <mailto:xml...@li...> >>>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>> >>> ------------------------------------------------------------------------ >>> >>> ------------------------------------------------------------------------------ >>> Come build with us! The BlackBerry(R) Developer Conference in SF, CA >>> is the only developer event you need to attend this year. Jumpstart your >>> developing skills, take BlackBerry mobile applications to market and stay >>> ahead of the curve. Join us from November 9 - 12, 2009. Register now! >>> http://p.sf.net/sfu/devconference >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> xmlvm-users mailing list >>> xml...@li... <mailto:xml...@li...> >>> https://lists.sourceforge.net/lists/listinfo/xmlvm-users >>> >> >> > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------------ > Come build with us! The BlackBerry(R) Developer Conference in SF, CA > is the only developer event you need to attend this year. Jumpstart your > developing skills, take BlackBerry mobile applications to market and stay > ahead of the curve. Join us from November 9 - 12, 2009. Register now! > http://p.sf.net/sfu/devconference > > > ------------------------------------------------------------------------ > > _______________________________________________ > xmlvm-users mailing list > xml...@li... > https://lists.sourceforge.net/lists/listinfo/xmlvm-users |