// file: ht_input_0.cc
//
// function to read acoustic feature data from input file
//

// isip include files
//
#include "hmm_train.h"
#include "hmm_train_constants.h"

// method: read_input_cc
//
// arguments:
//  FILE* fp : (input) file pointer to input file
//  int_4 num_feat : (input) size of the feature vector
//  int_4 input_mode : (input) ascii/binary
//  float_8* data : (output) vector of features
//
// return: a logical flag to indicate success
//
logical_1 read_input_cc(FILE* fp_a, int_4 num_feat_a, int_4 input_mode_a,
			float_8* data_a) {

  // dummy flag
  //
  logical_1 yes = ISIP_FALSE;
  
  // if ascii input
  //
  if (input_mode_a == HT_ASCII_MODE) {
    
    // read data from file
    //
    int_4 i = 0;
    while (fscanf(fp_a, "%lf", &data_a[i]) != EOF) {    
      i++;
      yes = ISIP_TRUE;
      
      // if data is read
      //
      if (i == num_feat_a) {
	break;
      }
    }
  }
  
  // if binary input
  //
  else {
    if ((int_4)fread(data_a, sizeof(double), num_feat_a, fp_a) == num_feat_a) {
      yes = ISIP_TRUE;
    }
    else {
      yes = ISIP_FALSE;
    }
  }
  
  // return gracefully
  //
  return yes;
}
