OSStatus AUMIDIBase::DelegateGetPropertyInfo()

in Source/AUMIDIBase.cpp [28:76]


OSStatus AUMIDIBase::DelegateGetPropertyInfo(AudioUnitPropertyID inID, AudioUnitScope inScope,
	AudioUnitElement inElement, UInt32& outDataSize, bool& outWritable)
{
	OSStatus result = noErr;

	(void)inScope;
	(void)inElement;
	(void)outDataSize;
	(void)outWritable;

	switch (inID) { // NOLINT if/else?!
#if AUSDK_HAVE_XML_NAMES
	case kMusicDeviceProperty_MIDIXMLNames:
		AUSDK_Require(inScope == kAudioUnitScope_Global, kAudioUnitErr_InvalidScope);
		AUSDK_Require(inElement == 0, kAudioUnitErr_InvalidElement);
		AUSDK_Require(GetXMLNames(nullptr) == noErr, kAudioUnitErr_InvalidProperty);
		outDataSize = sizeof(CFURLRef);
		outWritable = false;
		break;
#endif

#if AUSDK_HAVE_MIDI_MAPPING
	case kAudioUnitProperty_AllParameterMIDIMappings:
		AUSDK_Require(mMIDIMapper, kAudioUnitErr_InvalidProperty);
		AUSDK_Require(inScope == kAudioUnitScope_Global, kAudioUnitErr_InvalidScope);
		AUSDK_Require(inElement == 0, kAudioUnitErr_InvalidElement);
		outWritable = true;
		outDataSize = sizeof(AUParameterMIDIMapping) * mMIDIMapper->GetNumberMaps();
		result = noErr;
		break;

	case kAudioUnitProperty_HotMapParameterMIDIMapping:
	case kAudioUnitProperty_AddParameterMIDIMapping:
	case kAudioUnitProperty_RemoveParameterMIDIMapping:
		AUSDK_Require(mMIDIMapper, kAudioUnitErr_InvalidProperty);
		AUSDK_Require(inScope == kAudioUnitScope_Global, kAudioUnitErr_InvalidScope);
		AUSDK_Require(inElement == 0, kAudioUnitErr_InvalidElement);
		outWritable = true;
		outDataSize = sizeof(AUParameterMIDIMapping);
		result = noErr;
		break;
#endif

	default:
		result = kAudioUnitErr_InvalidProperty;
		break;
	}
	return result;
}