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

Reply via email to