// Copyright (C) 1998-1999 Jean-Marc Valin
#include "covariance_set.h"
#include "ObjectParser.h"
using namespace std;
namespace FD {
DECLARE_TYPE(CovarianceSet)
//@implements GMM
/*void CovarianceSet::toInvert (MeanSet &means)
{
int i;
means.toPtrs();
vector <vector<float> > sums(nb_covariances);
for (i=0;i<nb_covariances;i++)
sums[i].resize(covariance[i].size(),0.0);
for (i=0;i<means.size();i++)
{
Vector<float> &mean = means[i];
for (int j=0;j<mean.size();j++)
sums[i][j]+=mean[j];
}
for (i=0;i<nb_covariances;i++)
{
//covariances[i].toInvert
}
}*/
int CovarianceSet::getIDFor(RCPtr<Covariance> cov)
{
for (int i=0;i<nb_covariances;i++)
{
if (cov.get()==covariances[i].get())
return i;
}
nb_covariances++;
covariances.resize(nb_covariances);
covariances[nb_covariances-1]=cov;
return nb_covariances-1;
}
RCPtr<Covariance> CovarianceSet::getPtrFor(int id) const
{
if (id>=nb_covariances)
throw new GeneralException("Invalid covariance ID", __FILE__, __LINE__);
return covariances[id];
}
void CovarianceSet::printOn(ostream &out) const
{
out << "<CovarianceSet " << endl;
out << "<covariances " << covariances << ">" << endl;
out << "<nb_covariances " << nb_covariances << ">" << endl;
out << ">\n";
}
void CovarianceSet::readFrom (istream &in)
{
string tag;
while (1)
{
char ch;
in >> ch;
if (ch == '>') break;
else if (ch != '<')
throw new ParsingException ("CovarianceSet::readFrom : Parse error: '<' expected");
in >> tag;
if (tag == "covariances")
in >> covariances;
else if (tag == "nb_covariances")
in >> nb_covariances;
else
throw new ParsingException ("CovarianceSet::readFrom : unknown argument: " + tag);
if (!in) throw new ParsingException ("CovarianceSet::readFrom : Parse error trying to build " + tag);
in >> tag;
if (tag != ">")
throw new ParsingException ("CovarianceSet::readFrom : Parse error: '>' expected ");
}
}
istream &operator >> (istream &in, CovarianceSet &cov)
{
if (!isValidType(in, "CovarianceSet")) return in;
cov.readFrom(in);
return in;
}
}//namespace FD
syntax highlighted by Code2HTML, v. 0.9.1