// file: $isip/class/search/SearchLevel/slev_01.cc
// version: $Id: slev_01.cc 10570 2006-05-13 23:51:06Z may $
//

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

#ifndef ISIP_CONSOLE
#include <Console.h>
#endif

// method: debug
//
// arguments:
//  const unichar* msg: (input) message to print
//
// return: logical error status
//
// this is the debug method
//
boolean SearchLevel::debug(const unichar* msg_a) const {
  
  // dump the data
  //
  String output;
  String value;

  // write the search level index
  //
  value.assign((long)level_index_d);
  output.debugStr(name(), msg_a, L"level_index_d", value);
  Console::put(output);
  
  // write the beam pruning data
  //
  value.assign((boolean)use_beam_prune_d);
  output.debugStr(name(), msg_a, L"use_beam_prune_d", value);
  Console::put(output);

  value.assign((float)beam_threshold_d);
  output.debugStr(name(), msg_a, L"beam_threshold_d", value);
  Console::put(output);

  // write the instance pruning data
  //
  value.assign((boolean)use_instance_prune_d);
  output.debugStr(name(), msg_a, L"use_instance_prune_d", value);
  Console::put(output);

  value.assign((long)instance_threshold_d);
  output.debugStr(name(), msg_a, L"instance_threshold_d", value);
  Console::put(output);
  
  // write the context mode data
  //
  value.assign((boolean)use_context_d);
  output.debugStr(name(), msg_a, L"use_context_d", value);
  Console::put(output);

  value.assign((long)left_context_d);
  output.debugStr(name(), msg_a, L"left_context_d", value);
  Console::put(output);
  
  value.assign((long)right_context_d);
  output.debugStr(name(), msg_a, L"right_context_d", value);
  Console::put(output);
  
  // write the lexical tree data
  //
  value.assign((boolean)use_lexical_tree_d);
  output.debugStr(name(), msg_a, L"use_lexical_tree_d", value);
  Console::put(output);

  // write the nsymbol probability
  //
  value.assign((boolean)use_nsymbol_d);
  output.debugStr(name(), msg_a, L"use_nsymbol_d", value);
  Console::put(output);

  value.assign((long)nsymbol_order_d);
  output.debugStr(name(), msg_a, L"nsymbol_order_d", value);
  Console::put(output);
  
  // write the symbol occupancies
  //
  value.assign((boolean)write_symbol_occupancy_d);
  output.debugStr(name(), msg_a, L"write_symbol_occupancy_d", value);
  Console::put(output);

  symbol_table_d.debug(L"symbol_table_d");
  nonspeech_boundary_symbol_table_d.debug(L"nonspeech_boundary_symbol_table_d");
  nonspeech_internal_symbol_table_d.debug(L"nonspeech_internal_symbol_table_d");
  contextless_symbol_table_d.debug(L"contextless_symbol_table_d");
  skip_symbol_table_d.debug(L"skip_symbol_table_d");
  dummy_symbol_table_d.debug(L"dummy_symbol_table_d");
  exclude_symbol_table_d.debug(L"exclude_symbol_table_d");
  nsymbol_exclude_symbol_table_d.debug(L"nsymbol_exclude_symbol_table_d");
  spenalty_exclude_symbol_table_d.debug(L"spenalty_exclude_symbol_table_d");
  non_adapt_symbol_table_d.debug(L"non_adapt_symbol_table_d");
  symbol_hash_d.debug(L"symbol_hash_d");
  stat_models_d.debug(L"stat_models_d");
  sub_graphs_d.debug(L"sub_graphs_d");
  tmp_graphs_d.debug(L"tmp_graphs_d");
  context_hash_d.debug(L"context_hash_d");
  nsymbol_model_d.debug(L"nsymbol_model_d");
  context_map_d.debug(L"context_map_d");
  symbol_occupancy_file_d.debug(L"symbol_occupancy_file_d");
  
  // exit gracefully
  //
  return true;
}
