#include "InterCompoundFunc.h"
#include "InterSplineFunc.h"

InterAddedFunc::InterAddedFunc()
    : InterFunc()
{
}

InterAddedFunc::~InterAddedFunc()
{
    vector<InterFunc*>::iterator vit;
    for(vit=fFunc.begin(); vit!=fFunc.end(); ++vit) {
        delete (*vit);
    }
}

double InterAddedFunc::operator()(double x)
{
    double sum = 0;
    int size = fFunc.size();
    for(int i=0; i<size; ++i) {
        sum += (*fFunc[i])(x) * fWeight[i];
    }
    return sum;
}

void InterAddedFunc::Add(InterFunc* func, double weight /*=1*/)
{
    fFunc.push_back(func);
    fWeight.push_back(weight);
}

void InterAddedFunc::Init(vector<double>& vx, vector<double>& vy)
{
    fFunc.push_back(new InterSplineFunc(vx,vy));
    fWeight.push_back(1);
}
