Hello,

The legacy code takes gets input in the following format:
float fpSinrErrorRates[] = {
-1.0f, 1.00000f, 1.00000f, 1.00000f,
0.0f, 0.99998f, 1.00000f, 1.00000f,
1.0f, 0.97865f, 0.99998f, 1.00000f,
2.0f, 0.89000f, 0.99998f, 0.99998f,
3.0f, 0.76543f, 0.89000f, 0.97865f,
4.0f, 0.35954f, 0.79766f, 0.89000f,
5.0f, 0.12345f, 0.59567f, 0.76543f,
6.0f, 0.01346f, 0.32346f, 0.35954f,
7.0f, 0.00278f, 0.13356f, 0.21234f,
8.0f, 0.00000f, 0.01234f, 0.01346f };

where each row represents the sinr and bler for 3 speeds.
i.e eg first row sinr=-1.0f, bler_speed1=1.00000f, bler_speed_2 = 1.0000f, bler_speed_3 = 1.0000f

Now the change the input will be change to pass threee BlerCurves,
i. BlerCurve_speed_1 first param will be (-1.0f, 1.0000f)
Bler_speed_2 (-1.0f, 1.0000f) ,
Bler_speed_3 (-1.0f, 1.0000f)

I have written the follwing classes
Code:
//////////////////////////////////////////////////////////////////////////////
//
// Filename:        SinrBler.cpp ($Revision: 3 $ 1.0)
//
// Description:     class SinrBler
//                  ~~~~~ ~~~~~~~~
//
//                  Storage class for Sinr and Bler 
//
/////////////////////////////////////////////////////////////////////////////
//
// Revision History:
//
// Date         Author          Notes
// ----         ------          -----
// 02/09/01     Prdk           Created.

#include "SinrBler.h"
#include "ai_stdinc.h" //

// BEGIN 20020419paj added debug memory guard macros
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// END debug memory guard macros


// TODO_ : Check the default values for SINR and BLER 
SinrBler::SinrBler():
	m_dSINRdB(0),
	m_dBLER(0)
{
}

SinrBler::SinrBler(double sinr, double bler) :
	m_dSINRdB(sinr),
	m_dBLER(bler)
{
}

//SinrBler:: ~SinrBler(void) {}

SinrBler::SinrBler(const SinrBler &sinrbler) :
	m_dSINRdB(sinrbler.m_dSINRdB),
	m_dBLER(sinrbler.m_dBLER)
{
}


const SinrBler& SinrBler::operator = (const SinrBler& sinrbler)
{
	if (this == &sinrbler)
        return *this;
	m_dSINRdB = sinrbler.m_dSINRdB;
	m_dBLER = sinrbler.m_dBLER;

	return *this;
}


bool SinrBler::operator == (const SinrBler &sinrbler) const
{
	return	m_dSINRdB	== sinrbler.m_dSINRdB 
		&&	m_dBLER		== sinrbler.m_dBLER;
}


//////////////////////////////////////////////////////////////////////////////
//
// Filename:        SinrBler.cpp ($Revision: 3 $ 1.0)
//
// Description:     class SinrBler
//                  ~~~~~ ~~~~~~~~
//
//                  Storage class for Sinr and Bler 
//
/////////////////////////////////////////////////////////////////////////////
//
// Revision History:
//
// Date         Author          Notes
// ----         ------          -----
// 02/09/01     pdk Created.

#include "SinrBler.h"
#include "ai_stdinc.h" // AIRCOM Standard Include Header

// BEGIN 20020419paj added debug memory guard macros
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// END debug memory guard macros


// TODO_ : Check the default values for SINR and BLER 
SinrBler::SinrBler():
	m_dSINRdB(0),
	m_dBLER(0)
{
}

SinrBler::SinrBler(double sinr, double bler) :
	m_dSINRdB(sinr),
	m_dBLER(bler)
{
}

//SinrBler:: ~SinrBler(void) {}

SinrBler::SinrBler(const SinrBler &sinrbler) :
	m_dSINRdB(sinrbler.m_dSINRdB),
	m_dBLER(sinrbler.m_dBLER)
{
}


const SinrBler& SinrBler::operator = (const SinrBler& sinrbler)
{
	if (this == &sinrbler)
        return *this;
	m_dSINRdB = sinrbler.m_dSINRdB;
	m_dBLER = sinrbler.m_dBLER;

	return *this;
}


bool SinrBler::operator == (const SinrBler &sinrbler) const
{
	return	m_dSINRdB	== sinrbler.m_dSINRdB 
		&&	m_dBLER		== sinrbler.m_dBLER;
}

Now i want to emuate the previous input in the new format: I have to call the BlerCurve for 10 times for each speed. Is there a nicer way of doing this (not complicated)

BlerCurve blercurveSpeec30;
blercurveSpeec30.Clear();
SinrBler sinrbler(-1.0f, 1.00000f)
blercurveSpeec30.SetNthPoint(0, sinrbler);
sinrbler(0.0f, 0.99998f);
blercurveSpeec30.SetNthPoint(0, sinrbler);