// file: $isip/class/stats/MixtureModel/mm_05.cc
// version: $Id: mm_05.cc 9742 2004-08-20 20:43:15Z may $
//

// system include files
//
#include <typeinfo>

// isip include files
//
#include "MixtureModel.h"

// method: assign
//
// arguments:
//  const MixtureModel& arg: (input) object to assign
//
// return: a boolean value indicating status
//
// copy the input model to the current model.
//
boolean MixtureModel::assign(const MixtureModel& arg_a) {

  // assign the models
  //
  models_d.assign(arg_a.models_d);

  // assign the weights
  //
  weights_d.assign(arg_a.weights_d);
  
  // assign the computation mode
  //
  mode_d = arg_a.mode_d;
  //is_valid_d = false;
  is_valid_d = arg_a.is_valid_d;

  // exit gracefully
  //
  return true;
}

// method: assign
//
// arguments:
//  const StatisticalModelBase& arg: (input) object to assign
//
// return: a boolean value indicating status
//
// this method fulfills the StatisticalModelBase interface contract
//
boolean MixtureModel::assign(const StatisticalModelBase& arg_a) {

  if (typeid(arg_a) == typeid(MixtureModel)) {
    return assign((MixtureModel&)arg_a);
  }
  else {
    return Error::handle(name(), L"assign", Error::ARG, __FILE__, __LINE__);
  }
}
