[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: IDL 5 Syntax ?

Eric Kihn (eak@ngdc.noaa.gov) writes:

>     I have a syntax question regarding IDL objects. I have a object
> which has as one of it's data elements
>     a pointer to a structure (data).  In a method (draw) if I try to
> access part of the structure like:
>    plot, *self.data.X
>    I get the dread "Must be a structure in this context" message. (Which
> I think it is)
>    Where as if I do a :
>     ds  = *self.data
>      Plot,ds.X
>     Everypne is happy.  Why?

Because the pointer dereference has the lowest order
of precedence. Lower, even, than a structure dereference.
So in the code that doesn't work, the data structure is 
dereferenced first, and then the pointer is dereferenced.
But the pointer dereference is not dereferencing a pointer
at that point, so this syntax fails. 

What you can do (in all of IDL) is put parentheses
around something that you want to have a higher order
of precedence, since parentheses have the highest order
precedence. This will work:

   Plot, (*self.data).x



David Fanning, Ph.D.
Fanning Software Consulting
Phone: 970-221-0438 E-Mail: davidf@dfanning.com
Coyote's Guide to IDL Programming: http://www.dfanning.com/
Toll-Free IDL Book Orders: 1-888-461-0155