     I wouldn't necessarily call this elegant, but it is another way to 
     accomplish the same goal


______________________________ Reply Separator _________________________________
Subject: VRF - how to reverse an array?
Author:  rsb-at-sr (rsb@sr.hp.com) at HP-USA,mimegw1
Date:    12/23/97 7:15 PM


Something seemingly very basic: I want to reverse the order of
the elements in a general 1D array. The best I can come up with in 20 minutes 
or so is the below function which seems pretty hokey. This breaks
with mapped arrays like waveforms but works for (I think) everything else.
     
Does anyone have a more elegant solution?
     
Am I perhaps overlooking something built in?
     
thanks
     
Stan Bischof
rsb@sr.hp.com
     
(saveFormat "2.3")
(date "Tue 23/Dec/1997 16:14:54 ")
(veerev "4.01")
(platform "PC")
(execMode fast)
(filterNAN 0)
(device 0 ROOTCONTEXT
(deviceList
(component 0 CONTEXT
(properties
(name "reverse")
(trigMode deg)
(nextID 5)
(popupTitleText "UserObject")
(popupMoveable 1))
(interface
(input 1
(name "A")
(optional yes))
(output 1
(type data)
(name "X")
(lock constraints)
(optional yes)))
(deviceList
(device 0 FORMULA
(properties
(expr 1 "totSize(a)"))
(interface
(input 1
(name "A")
(optional yes))
(output 1
(name "Result")
(tag "Result")
(lock name constraints)
(optional yes))))
(device 1 TORECORD
(properties
(outputType array))
(interface
(input 1
(name "index")
(optional yes))
(input 2
(name "A")
(optional yes))
(output 1
(name "Record"))))
(device 2 FORMULA
(properties
(expr 1 "sort(a, 0)"))
(interface
(input 1
(name "A")
(optional yes))
(output 1
(name "Result")
(tag "Result")
(lock name constraints)
(optional yes))))
(device 3 ALLOCATEARRAY
(properties
(name "Alloc Integer"))
(interface
(input 1
(name "Dim Size 1")
(tag "Dim Size 1")
(requires
(datatype Int32)
(shape "Scalar"))
(lock constraints)
(optional yes)
(buffer YES))
(output 1
(name "Array")
(tag "Array")))
(implementation
(numDims 1)
(dimSizes "10")
(type "Int32")
(initEnum "Lin Ramp")
(initialValue
(data  0))
(from 1)
(thru 10)))
(device 4 FORMULA
(properties
(expr 1 "a.a"))
(interface
(input 1
(name "A")
(optional yes))
(output 1
(name "Result")
(tag "Result")
(lock name constraints)
(optional yes))))
(configuration
(connect I1:1 D0:1)
(connect D3:1 D1:1)
(connect I1:1 D1:2)
(connect D1:1 D2:1)
(connect D0:1 D3:1)
(connect D2:1 D4:1)
(connect D4:1 O1:1)))
(contextCarrier
(active detail)
(detail
(extent 584 180)
(anchorPt 0 0)
(configuration
(devCarrierFor 0
(active icon)
(icon
(extent 57 16))
(open
(extent 94 32))
(terminals on)
(pinCenter 90 90))
(devCarrierFor 1
(active icon)
(icon
(extent 89 52)
(iconImage "build.icn"))
(open
(extent 103 56))
(terminals on)
(pinCenter 290 90))
(devCarrierFor 2
(active icon)
(icon
(extent 57 16))
(open
(extent 133 32))
(terminals on)
(pinCenter 400 90))
(devCarrierFor 3
(active icon)
(icon
(extent 85 16))
(open
(extent 208 117))
(terminals on)
(pinCenter 180 80))
(devCarrierFor 4
(active icon)
(icon
(extent 57 16))
(open
(extent 79 32))
(terminals on)
(pinCenter 480 90))
(connect I1:1 D0:1
(points 4 0 89 29 89 29 90 59 90))
(connect D3:1 D1:1
(points 2 225 80 243 80))
(connect I1:1 D1:2
(points 6 0 89 40 89 40 120 220 120 220 100 243 100)) 
(connect D1:1 D2:1
(points 2 337 90 369 90))
(connect D0:1 D3:1
(points 4 121 90 130 90 130 80 135 80)) 
(connect D2:1 D4:1
(points 2 431 90 449 90))
(connect D4:1 O1:1
(points 4 511 90 547 90 547 89 583 89))) 
(stackingOrder 0 1 2 3 4))))
(configuration))
(contextCarrier
(active detail)
(detail
(configuration
(devCarrierFor 0
(active icon)
(icon
(extent 52 16))
(terminals on)
(pinCenter 475 339))))))
