// file: $isip/class/pr/HiddenMarkovModel/hmm_06.cc
// version: $Id: hmm_06.cc 9329 2003-10-29 20:40:03Z alphonso $
//

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

// method: setOutputMode
//
// arguments:
//  const String& output_mode: (input) output mode option from commandline
//
// return: a boolean indicating status
//
boolean HiddenMarkovModel::setOutputMode(const String& output_mode_a) {
  
  if (output_mode_a.eq(OPTION_MODE_FILE)) {
    output_mode_d = FILE;
    return true;
  }
  if (output_mode_a.eq(OPTION_MODE_TRANSFORM)) {
    output_mode_d = TRANSFORM;
    return true;
  }
  if (output_mode_a.eq(OPTION_MODE_LIST)) {
    output_mode_d = LIST;
    return true;
  }
  if (output_mode_a.eq(OPTION_MODE_DATABASE)) {
    output_mode_d = DATABASE;
    return true;
  }  
  return false;
}

// method: setOutputFormat
//
// arguments:
//  const String& output_format: (input) output format option from commandline
//
// return: a boolean indicating status
//
boolean HiddenMarkovModel::setOutputFormat(const String& output_format_a) {
  
  if (output_format_a.eq(OPTION_FORMAT_NIST_SCORE)) {
    output_format_d = NIST_SCORE;
    return true;
  }
  if (output_format_a.eq(OPTION_FORMAT_NATIVE)) {
    output_format_d = NATIVE;
    return true;
  }
  if (output_format_a.eq(OPTION_FORMAT_JSGF)) {
    output_format_d = JSGF;
    return true;
  }  
  return false;
}

// method: setOutputType
//
// arguments:
//  const String& output_type: (input) output type option from commandline
//
// return: a boolean indicating status
//
boolean HiddenMarkovModel::setOutputType(const String& output_type_a) {
  
  if (output_type_a.eq(OPTION_TEXT)) {
    output_type_d = TEXT;
    return true;
  }
  if (output_type_a.eq(OPTION_BINARY)) {
    output_type_d = BINARY;
    return true;
  }
  return false;
}

// method: setUpdateMode
//
// arguments:
//  const String& update_mode: (input) update mode option from commandline
//
// return: a boolean indicating status
//
boolean HiddenMarkovModel::setUpdateMode(const String& update_mode_a) {

  if (update_mode_a.eq(OPTION_UPDATE_TRANSITIONS)) {
    update_mode_d = TRANSITIONS;
    return true;
  }
  if (update_mode_a.eq(OPTION_UPDATE_OBSERVATIONS)) {
    update_mode_d = OBSERVATIONS;
    return true;
  }
  if (update_mode_a.eq(OPTION_UPDATE_ALL)) {
    update_mode_d = ALL;
    return true;
  }      
  return false;
}

// method: setFunctionMode
//
// arguments:
//  const String& function_mode: (input) function mode option from commandline
//
// return: a boolean indicating status
//
boolean HiddenMarkovModel::setFunctionMode(const String& function_mode_a) {

  if (function_mode_a.eq(OPTION_FUNCTION_NONE)) {
    function_mode_d = NONE;
    return true;
  }
  if (function_mode_a.eq(OPTION_FUNCTION_GRAMMAR_DECODING)) {
    function_mode_d = GRAMMAR_DECODING;
    return true;
  }
  if (function_mode_a.eq(OPTION_FUNCTION_NETWORK_DECODING)) {
    function_mode_d = NETWORK_DECODING;
    return true;
  }
  if (function_mode_a.eq(OPTION_FUNCTION_ACCUMULATE)) {
    function_mode_d = ACCUMULATE;
    return true;
  }
  if (function_mode_a.eq(OPTION_FUNCTION_UPDATE)) {
    function_mode_d = UPDATE;
    return true;
  }  
  return false;
}
