Allow waves for multiple parameters in built-in functions

Built-in function parameters are often specified like this:

Slider limits = {low,high,inc}

I'd often like to be able to use syntax like this:

Slider limits=myLimitsWave   //where myLimitsWave would presumably be a 3-point 1-dimensional wave

For an example use case: Sometimes I make a function that is going to iterate over multiple calls of a built-in function. I'll use Slider as an example below. (It could also be ModifyGraph rgb, muloffset, or any function with a multiple-value named parameter.) In such cases I resort to loops like the following:

function buildSliders_currently()

	newpanel/k=1
	int i,numSliders = 3
	make/o/free/n=(3,numSliders) minMaxIncr
	minMaxIncr[][0] = {-100,100,10}
	minMaxIncr[][1] = {-1000,0,100}
	minMaxIncr[][2] = {-5,10,.1}

	for (i=0;i<numSliders;i++)
  //passing the 3 parameters like this has always seemed cumbersome
		slider $("slider_"+num2str(i)) limits={minMaxIncr[0][i],minMaxIncr[1][i],minMaxIncr[2][i]}
	endfor

end

But every so often I try (and then fail to compile) code like this. I'd use this syntax regularly if it worked because I find it easier to read and write

function buildSliders_wishedSyntax()

	newpanel/k=1
	int i,numSliders = 3
	make/o/free/n=(3,numSliders)/free minMaxIncr
	minMaxIncr[][0] = {-100,100,10}
	minMaxIncr[][1] = {-1000,0,100}
	minMaxIncr[][2] = {-5,10,.1}
	
	for (i=0;i<numSliders;i++)
		//option A
		duplicate/o/r=[][i] minMaxIncr,limitsWv;redimension/n=(-1) limitsWv
		slider $("slider_"+num2str(i)) limits=limitsWv		//doesn't compile
		
		//option B
		slider $("slider_"+num2str(i)) limits=minMaxIncr[][i]		//doesn't compile
	endfor
	
end

 

I like this idea. In the meantime, why not use a general purpose function for both cases:

Function SetSliderLimits(sname,pname,wlimits)
    string sname, name
    wave wlimits

    Slider $sname, win=$pname, limits={ ...}
    return 0
end

This change might also lend itself to this:

make/N=(Nsliders)/FREE dummy
...
dummy = SetSliderLimits(("slider"+num2str[p]),"mypanel",minmaxInc[][p])

as a way to avoid the for-loop.