// Copyright (C) 1998-1999 Jean-Marc Valin #include "gaussian_set.h" #include "ObjectParser.h" using namespace std; namespace FD { DECLARE_TYPE(GaussianSet) //@implements GMM int GaussianSet::getIDFor(RCPtr cov) { for (int i=0;i GaussianSet::getPtrFor(int id) const { if (id>=nb_gaussians) throw new GeneralException("Invalid gaussian ID", __FILE__, __LINE__); return gaussians[id]; } void GaussianSet::toIDs(MeanSet & means, CovarianceSet & covariances) { for (int i=0;itoIDsUsing(means, covariances); } } void GaussianSet::toPtrs(const MeanSet & means, const CovarianceSet & covariances) const { for (int i=0;itoPtrsUsing(means, covariances); } } void GaussianSet::printOn(ostream &out) const { out << "" << endl; out << "" << endl; out << ">\n"; } void GaussianSet::readFrom (istream &in) { string tag; while (1) { char ch; in >> ch; if (ch == '>') break; else if (ch != '<') throw new ParsingException ("GaussianSet::readFrom : Parse error: '<' expected"); in >> tag; if (tag == "gaussians") { in >> gaussians; } else if (tag == "nb_gaussians") in >> nb_gaussians; else throw new ParsingException ("GaussianSet::readFrom : unknown argument: " + tag); if (!in) throw new ParsingException ("GaussianSet::readFrom : Parse error trying to build " + tag); in >> tag; if (tag != ">") throw new ParsingException ("GaussianSet::readFrom : Parse error: '>' expected "); } } istream &operator >> (istream &in, GaussianSet &cov) { if (!isValidType(in, "GaussianSet")) return in; cov.readFrom(in); return in; } }//namespace FD