comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » passing structure elements... by value?
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: passing structure elements... by value? [message #25823 is a reply to message #25725] Fri, 13 July 2001 09:53 Go to previous messageGo to previous message
david[2] is currently offline  david[2]
Messages: 100
Registered: June 2001
Senior Member
Randall Skelton writes:

> I am seem to be somewhat confused on passing structure... this *almost*
> seems like one of those dreaded 'pass by reference/pass by value'
> problems...
>
> I have a simple routine that increments the value of a structure:
>
> pro test, mod_struct
> for i=0, n_tags(mod_struct)-1 do begin
> mod_struct.(i) = mod_struct.(i) + 1
> endfor
> end
>
> As expected, this will increment all of the values in a passed structure.
>
> IDL> struct = {A:0, B:0} & big = replicate(struct,3)
> IDL> print, big
> { 0 0}{ 0 0}{ 0 0}
> IDL> test, big
> IDL> print, big
> { 1 1}{ 1 1}{ 1 1}
>
> But, when I try and increment a single element in the structure it fails?
>
> IDL> struct = {A:0, B:0} & big = replicate(struct,3)
> IDL> test, big[0]
> IDL> print, big
> { 0 0}{ 0 0}{ 0 0}
> ^^^^^^^^^^^^^^^^^^
>
> I expected the ^^ element above to be ones? Is there any way to force IDL
> to pass this by reference instead of passing by value? It would be nice if
> you could put brackets around the thing you want to pass by reference...
> something like '(big[0])'

You could easily add the field you want to change as
a second positional parameter:

pro test, mod_struct, fieldno
IF N_Elements(filedno) EQ 0 THEN BEGIN
for I=0, n_tags(mod_struct)-1 do begin
mod_struct.(I) = mod_struct.(I) + 1
endfor
ENDIF ELSE mod_struct.(fieldno) = mod_struct.(fieldno) + 1
end

Cheers,

David
--
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
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Events in IDLDrawWidget
Next Topic: widget-programming

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Wed Oct 08 14:52:15 PDT 2025

Total time taken to generate the page: 0.00358 seconds