// Needed to support the use of multiple parameters
void FullConnectivity::SetRandomWeights(float minVal, vector<float> maxVal,Network* net)
{
	m_setRandomWeights = true;
	m_weightsMinVal = minVal;
	m_weightsMaxVal = maxVal[0];
	m_weightsMaxValParams = maxVal;
	this->network(net);
	AddParameters();
}
inline
bool
AddParameters(const BMessage& message, driver_parameter *to)
{
	if(!to)
		return false;
	
	return AddParameters(message,
		reinterpret_cast<driver_settings*>(&to->parameter_count));
}
driver_settings*
MessageToDriverSettings(const BMessage& message)
{
	driver_settings *settings = new_driver_settings();
	
	if(!AddParameters(message, settings)) {
		free_driver_settings(settings);
		return NULL;
	}
	
	return settings;
}
static
bool
AddParameters(const BMessage& message, driver_settings *to)
{
	const char *name;
	BMessage current;
	driver_parameter *parameter;
	for(int32 index = 0; message.FindMessage(MDSU_PARAMETERS, index,
			&current) == B_OK; index++) {
		name = current.FindString(MDSU_NAME);
		parameter = new_driver_parameter(name);
		if(!AddValues(current, parameter))
			return false;
		
		AddParameters(current, parameter);
		add_driver_parameter(parameter, to);
	}
	
	return true;
}