Rick, Those both work very nicely for what I was trying to do:
UserDialog::init() GetCSelf=000007FFFF099EA0 ObjectToCSelf(self, GetScope)=000007FFFF099EA0 Which is the right pointer for the PlainBaseDialog CSelf. The way I was going to use the ObjectToCSelf with scope was to use the scope of the method. The GetCSelf() then is a handy shortcut. -- Mark Miesfeld On Tue, Sep 8, 2009 at 2:10 PM, Rick McGuire<object.r...@gmail.com> wrote: > Ok, I've added a couple of new APIs. The first is a GetCSelf() API > that will return the same value that would normally be passed as a > CSELF argument. This is really the one you want to use for your > purposes. The other API is a variant of ObjectToCSelf() that takes a > starting scope for the lookup. > > Rick > > On Tue, Sep 8, 2009 at 2:33 PM, Mark Miesfeld<miesf...@gmail.com> wrote: >> On Tue, Sep 8, 2009 at 11:02 AM, Rick McGuire<object.r...@gmail.com> wrote: >> >>> The CSELF lookup is an unscoped lookup, so essentially, and object >>> instance can only have ONE cself variable per object instance and all >>> references to CSELF in any native methods will resolve to the same >>> instance. >> >> Okay, that is what I thought. >> >>> If you have multiple inheritance levets setting this value, >>> then the top of the inheritance hierarchy will be the one that wins >>> (in your case, you'll always see the one set by the UserDialog class). >> >> With this chain, (which maybe is not the right order, but I thought it was) >> >> UserDialog -> BaseDialog -> PlainBaseDialog -> WindowBase >> >> UserDialog subclasses BaseDialog subclasses PlainBaseDialog inherits >> WindowBase >> >> I only set a CSelf in PlainBaseDialog and in WindowBase. >> >> I thought in the native methods tied directly to WindowBase, they >> would always get the CSelf set in the WindowBase init(). And in the >> native methods tied directly to any of the dialog classes they would >> only get the CSelf set in PlainBaseDialog. >> >> I thought that PlainBaseDialog would be before WindowBase in the >> inheritance chain, going up, so that in UserDialog and BaseDialog they >> would only see the PlainBaseDialog CSelf. >> >>> The CSELF is really designed for sitiations where there is just a >>> single native pointer values and methods at all levels of the >>> hierarchy are accessing the same value. If you wish to use multiple >>> native values, you'll need to do the unwrapping yourself, For >>> example, in your case, if you call GetObjectVariable('CSELF') in any >>> of your init methods, you'll retrieve the value set by that level of >>> the inheritance hiearchy. >> >> But in this case there is no CSELF set at the UserDialog level. So, I >> can't do that. >> >> I guess it all comes down to I'm not understanding what the top of the >> inheritance chain is. As I said above, for a UserDialog, I thought >> PlainBaseDialog would be before WindowBase, going up the chain, so >> that the PlainBaseDialog CSelf would win. >> >> And it does when I use the CSELF argument type in native methods tied >> to a UserDialog class. >> >> It's just in this case where I use ObjectToCSelf(selfObj) that I get >> the WindowBase CSelf, where I know that selfObj is a dialog object. >> I.e. a PlainBaseObject, or one of its subclasses. >> >> I guess, if I was sure that ObjectToCSelf(dialogObjSelf), where I know >> for sure dialogObjSelf is one of the dialog classes, would always >> return the WindowBase CSelf, I could work with that. >> >> -- >> Mark Miesfeld >> >> ------------------------------------------------------------------------------ >> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day >> trial. Simplify your report design, integration and deployment - and focus on >> what you do best, core application coding. Discover what's new with >> Crystal Reports now. http://p.sf.net/sfu/bobj-july >> _______________________________________________ >> Oorexx-devel mailing list >> Oorexx-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/oorexx-devel >> > > ------------------------------------------------------------------------------ > Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day > trial. Simplify your report design, integration and deployment - and focus on > what you do best, core application coding. Discover what's new with > Crystal Reports now. http://p.sf.net/sfu/bobj-july > _______________________________________________ > Oorexx-devel mailing list > Oorexx-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/oorexx-devel > ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Oorexx-devel mailing list Oorexx-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/oorexx-devel