// file: dec_cstr_1.cc
//

// isip include files
//
#include "decoder.h"
#include "decoder_constants.h"
 
// method: constructor
//
// arguments: none
//
// return: none
//
// this is the default constructor for the class
//
Decoder::Decoder() {

  // reset function and align modes
  //
  restructure_memory_d = ISIP_FALSE;
  function_mode_d = DEC_DEFAULT_INDEX;
  context_mode_d = DEC_DEFAULT_INDEX;
  align_mode_d = DEC_DEFAULT_INDEX;
  input_format_d = DEC_DEFAULT_INDEX;
  input_feature_format_d = DEC_ISIP_PROTO_FORMAT;
  demo_mode_d = ISIP_FALSE;
  
  // reset delta and acceleration computaional modes
  //
  delta_win_d = DEC_DEFAULT_DELTA_WIN;
  delta_d = DEC_DEFAULT_DELTA;
  acc_d = DEC_DEFAULT_ACC;
  
  // number of utterances decoded
  //
  num_utt_d = DEC_DEFAULT_INDEX;
  
  // levels in the search hierarchy
  //
  num_levels_d = DEC_DEFAULT_INDEX;

  // timing information
  //
  frame_d = DEC_DEFAULT_INDEX;
  frame_dur_d = DEC_DEFAULT_VALUE;

  // input feature data information
  //
  num_feat_d = DEC_DEFAULT_INDEX;
  features_d = (float_4*)NULL;
  
  // acoustic model information
  //
  // context independent models
  //
  ci_models_d = (char_1**)NULL;
  num_ci_d = DEC_DEFAULT_INDEX;

  // context dependent models
  //
  cd_models_d = (Phone**)NULL;
  cdmap_d = (int_4*)NULL;
  cd_size_d = DEC_DEFAULT_INDEX;
  num_cd_d = DEC_DEFAULT_INDEX;
  
  // Hidden Markov models
  //
  models_d = (Model**)NULL;
  num_models_d = DEC_DEFAULT_INDEX;
  
  // state transition matrices
  //
  transitions_d = (float_4**)NULL;
  num_trans_d = DEC_DEFAULT_INDEX;

  // model states
  //
  states_d = (State**)NULL;
  num_states_d = DEC_DEFAULT_INDEX;

  // lexicon
  //
  lexicon_d = (Hash_table*)NULL;
  num_words_d = DEC_DEFAULT_INDEX;
  
  // lm related parameters
  //
  lmscale_d = DEC_LM_SCALE;
  wdpenalty_d = DEC_DEFAULT_VALUE;
  ngram_order_d = DEC_DEFAULT_INDEX;
  ngram_d = (Ngram*)NULL;
  lattice_d = (Lattice*)NULL;
  gram_list_d = (Link_list*)NULL;
  compact_lattice_d = ISIP_FALSE;
  
  // path information
  //
  // active model instances
  //
  inst_table_d = (Hash_table*)NULL;
  inst_list_d = (Link_list*)NULL;
  inst_count_d = DEC_DEFAULT_INDEX;

  // hypotheses information
  //
  nbest_d = (Trace**)NULL;
  num_hyps_d = DEC_DEFAULT_INDEX;
  num_nbest_d = DEC_DEFAULT_INDEX;
  
  // path history information
  //
  history_list_d = (Link_list*)NULL;
  num_hist_d = DEC_DEFAULT_INDEX;

  // lexical tree information
  //
  proto_tree_d = (Lex_tree*)NULL;
  lextree_list_d = (Link_list*)NULL;

  // list of traces at model level
  //
  active_models_d = (int_4*)NULL;
  model_trlist_d = (Link_list**)NULL;
  num_active_models_d = DEC_DEFAULT_INDEX;

  // list of traces at word level
  //
  active_words_d = (int_4*)NULL;
  word_scores_d = (float_4*)NULL;
  word_trlist_d = (Link_list**)NULL;
  num_active_words_d = DEC_DEFAULT_INDEX;  

  // pruning-related information
  //
  // beam pruning information
  //
  max_score_d = (float_4*)NULL;
  beam_d = (float_4*)NULL;
  beam_thresh_d = (float_4*)NULL;

  // instance pruning information
  //
  mapmi_limit_d = DEC_DEFAULT_INDEX;
  mapmi_thresh_d = DEC_DEFAULT_SCORE;

  // word-end pruning information
  //
  num_wordends_d = DEC_DEFAULT_INDEX;
  wordend_thresh_d = DEC_DEFAULT_SCORE;

  // demo information
  //
  num_steps_d = DEC_DEFAULT_INDEX;

  // trace generation and other statistics
  //
  num_traces_total_d = (int_4*)NULL;
  num_traces_gen_d = (int_4*)NULL;
  num_traces_del_d = (int_4*)NULL;
  total_gen_d = (int_4*)NULL;
  total_del_d = (int_4*)NULL;

  // special models
  //
  sil_model_d = DEC_DEFAULT_INDEX;
  sp_model_d = DEC_DEFAULT_INDEX;
  sp_score_d = DEC_DEFAULT_SCORE;
  
  // memory manager
  //
  manager_d = (Memory_manager*)NULL;

  // Communicator API
  //
  buf_d = (float_8 *)NULL;
  size_d = 0;
  current_d = 0;

  // model-level segment information
  //
  model_seglist_d = (Link_list*)NULL;
  
  // exit gracefully
  //
}
