// file: tr_path_0.cc
//

// isip include files
//
#include "trace.h"
#include "trace_constants.h"

// method: project_trace_cc
//
// arguments:
//  Trace* trace : (input) the trace so far
//  float_4 score : (input) the incremental score
//
// return: a logical_1 indicating status
//
// this method projects the trace onwards and updates the score
//
logical_1 Trace::project_trace_cc(Trace* trace_a, float_4 score_a) {

  // make sure the input trace is valid
  //
  if (trace_a == (Trace*)NULL) {
    return ISIP_FALSE;
  }

  // copy the parameters
  //
  level_d = trace_a->level_d;
  lex_next_d = trace_a->lex_next_d;
  state_index_d = trace_a->state_index_d;  
  phone_index_d = trace_a->phone_index_d;  
  
  // set the path history information
  //
  instance_d = trace_a->instance_d;
  history_d = trace_a->history_d;

  // add incremental score
  //
  score_d = trace_a->score_d + score_a;
    
  // exit gracefully
  //
  return ISIP_TRUE;
}
