Get list of functions which use pass-by-reference and are candidates for MRS

 This snippet returns a list of pass-by-reference functions which, in most cases, should better be written using multiple return value syntax instead of pass-by-reference.

#pragma TextEncoding = "UTF-8"
#pragma rtGlobals=3
#pragma IgorVersion=9.0

// Call with: GetListOfPassByRefFunctions("MyFiles*")
Function GetListOfPassByRefFunctions(string winMatchExpression)

	WAVE/T wins = ListToTextWave(WinList(winMatchExpression, ";", ""), ";")

	string func, win, info
	variable numParams, i, type

	for(win : wins)
		WAVE/T funcs = ListToTextWave(FunctionList("*", ";", "KIND:18,WIN:" + win), ";")
		for(func : funcs)
			info = FunctionInfo(func, win)
			numParams = NumberByKey("N_PARAMS", info)
			for(i = 0; i < numParams; i += 1)
				type = NumberByKey("PARAM_" + num2str(i) + "_TYPE", info)

				if(type & 0x1000 && !(type & 0x200)) // pass-by-ref but no struct
					print func
					break
				endif
			endfor
		endfor
	endfor
End

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More