// Copyright (C) 1999 Jean-Marc Valin


#ifndef ACCOUSTIC_MODEL_H
#define ACCOUSTIC_MODEL_H

#include "gmm.h"
#include "gaussian.h"
#include "covariance.h"
#include "Object.h"
#include <iostream>
#include "covariance_set.h"
#include "mean_set.h"
#include "gaussian_set.h"
#include "gmm_set.h"

//#include "state.h"

namespace FD {

class AcousticModel : public Object{
protected:
   CovarianceSet covariances;
   MeanSet means;
   GaussianSet gaussians;
   GMMSet gmms;

public:
   AcousticModel() {}

   /**convert all elements to using IDs (before saving)*/
   void toIDs();
 
   /**convert all elements to using Ptrs (after loading)*/
   void toPtrs();

   /** print function used for operator << */
   virtual void printOn(std::ostream &out=std::cout) const;

   /**Read function used for operator >> */
   void readFrom (std::istream &in=std::cin);

   /**extractor operator*/
   friend std::istream &operator >> (std::istream &in, AcousticModel &mdl);
   
};

}//namespace FD
#endif


syntax highlighted by Code2HTML, v. 0.9.1