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

Reply via email to