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.
Unfortunately, the ObjectToCSelf API doesn't have a "starting point" like the CSELF argument value. This merely traverses all of the possible variable scopes using the order returned by the superclasses method to locate a candidate value. > >> 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. The CSELF argument type was changed already to use a scoped lookup starting from the current method scope. The ObjectToCSelf() API operates by different rules because you're reaching into another object for the value. A scoped version of this API would probably give you what you want. > > 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