// file: $isip/class/pr/RegressionDecisionTree/rdt_01.cc
// version: $Id: rdt_01.cc 9459 2004-04-19 16:06:08Z gao $
//

// isip include files
//
#include "RegressionDecisionTree.h"
#include <Console.h>

// method: debug
//
// arguments:
//  const unichar* msg: (input) message to print
//
// return: a boolean value indicating status
//
boolean RegressionDecisionTree::debug(const unichar* msg_a) const {

  // declare local variables
  //
  String output;

  // output an information message
  //
  output.debugStr(name(), msg_a, L":");
  Console::put(output);
  Console::increaseIndention();

  // display the algorithm choice
  //
  output.debugStr(name(), msg_a, L"algorithm_d",
		  ALGO_MAP((long)algorithm_d));
  Console::put(output);

  // display the implementation name
  //
  output.debugStr(name(), msg_a, L"implementation_d",
                  IMPL_MAP.getName((long)implementation_d));
  Console::put(output);

  // display the speech flag
  //
  String value;
  value.assign(speech_flag_d);
  output.debugStr(name(), msg_a, L"speech_flag_d", value);
  Console::put(output);

  // display the number of terminals
  //
  value.assign(num_terminals_d);
  output.debugStr(name(), msg_a, L"num_terminals_d", value);
  Console::put(output);

  // display the perturb depth
  //
  value.assign(perturb_depth_d);
  output.debugStr(name(), msg_a, L"perturb_depth_d", value);
  Console::put(output);

  // display the minimum occupation count
  //
  value.assign(occ_threshold_d);
  output.debugStr(name(), msg_a, L"occ_threshold_d", value);
  Console::put(output);

  // display the minimum component
  //
  value.assign(components_threshold_d);
  output.debugStr(name(), msg_a, L"components_threshold_d", value);
  Console::put(output);

  // display the mixture offset
  //
  mixture_offset_d.debug(L"mixture_offset_d");
  
  // display the stat to trans
  //
  map_stat_to_trans_d.debug(L"map_stat_to_trans_d");

  // print the data
  //
  rdt_rootnode_d.debug(L"rdt_rootnode_d");  
  
  // display the base class
  //
  DecisionTreeBase<RegressionDecisionTreeNode>::debug(L"DecisionTreeBase");

  // display debug level
  //
  output.debugStr(name(), msg_a, L"debug_level_d", debug_level_d.getName());
  Console::put(output);

  // decrease indention
  //
  Console::decreaseIndention();

  // exit gracefully
  //
  return true;
}
