#include "CrossReliabilityProfileModule.h"

CrossReliabilityProfileModule::CrossReliabilityProfileModule() {

}

CrossReliabilityProfileModule::CrossReliabilityProfileModule(string name) : Unit(name) {

}

CrossReliabilityProfileModule::~CrossReliabilityProfileModule() {
	//TODO: delete allocated memory
}

void CrossReliabilityProfileModule::setFunctionBlock(DiscreteFunctionBlock *discreteFunctionBlock, string agent1, string agent2) {

	CrossReliabilityProfile* ReliabilityProfile = new CrossReliabilityProfile();
	
	ReliabilityProfile->discreteFunctionBlock = discreteFunctionBlock;
	ReliabilityProfile->agent1 = agent1;
	ReliabilityProfile->agent2 = agent2;

	crossReliabilityProfiles.push_back(ReliabilityProfile);
}

/*
bool CrossReliabilityProfileModule::setFunctionBlocks(LinearFunctionBlock *reliabilityAbsolute, LinearFunctionBlock *reliabilitySlope) {
	
	if (reliabilityAbsolute && reliabilitySlope) {
		this->reliabilityAbsolute = reliabilityAbsolute;
		this->reliabilitySlope = reliabilitySlope;
		//printf(" > functionsBlocks set\n");
		return true;
	}
	
	return false;
}
*/

float CrossReliabilityProfileModule::getCrossReliabilityFromProfile(string agent1, string agent2, int scoreDiff) {
	for (auto &cRp : crossReliabilityProfiles) {
		if (cRp->agent1 == agent1 && cRp->agent2 == agent2) {
			return cRp->discreteFunctionBlock->getY(scoreDiff);
		}
	}
	printf("no Profile found\n");
	return 0;
}