// file: $isip/util/speech/isip_lm_tester/isip_lm_tester.h
//

// make sure the file is included only once
//
#ifndef ISIP_LM_TESTER
#define ISIP_LM_TESTER

// isip include files
//
#include <FrontEnd.h>
#include <CommandLine.h>
#include <LanguageModel.h>
#include <LanguageModelIHD.h>
#include <SearchLevel.h>
#include <Trace.h>
#include <DoubleLinkedList.h>
#include <Math.h>
#include <Random.h>
#include <HistoryPool.h>
#include <ContextPool.h>
#include <File.h>
#include <Sof.h>
#include <TranscriptionDatabase.h>
#include <HierarchicalDigraph.h>
#include <HierarchicalSearch.h>

static const String PROG_NAME(L"isip_lm_tester");
static const String PARAM_MODE(L"mode");
static const String PARAM_TRANS_INPUT_NAME(L"trans_input");
static const String PARAM_PARSE_OUTPUT(L"output");
static const String PARAM_GRAMMAR_NAME(L"language_model");
static const String PARAM_OUTPUT_NAME(L"output_file");
static const String PARAM_DEBUG(L"debug_level");
static const String PARAM_EXCLUDE(L"exclude");
static const String PARAM_ID_LIST(L"list");

static const String PARAM_RANDOM_SEED(L"seed");
static const String PARAM_SENTENCE_NUMBER(L"sentence_count");
static const String PARAM_SENTENCE_LENGTH(L"max_length");
static const String PARAM_OUTPUT_LEVEL(L"level");
static const String PARAM_OUTPUT_TYPE(L"type");
static const String PARAM_DB_NAME(L"name");

static const String DEF_MODE(L"generate");
static const String PARAM_GEN_MODE(L"generate");
static const String PARAM_PARSE_MODE(L"parse");

//static const String DEF_OUTPUT_TYPE(L"text");

static const Long DEF_RANDOM_SEED = -1;
static const Long DEF_SENTENCE_NUMBER = 1;
static const Long DEF_SENTENCE_LENGTH = 100;
static const Long DEF_OUTPUT_LEVEL = -1;
static const File::TYPE DEF_OUTPUT_TYPE = File::TEXT;
static const String EMPTY(String::NULL_STRING);

boolean parseTranscription(Filename& trans_db_file,
			   boolean exclude,
			   long i, Long& output_level,
			   HierarchicalSearch& search_engine);

// end of file
//
#endif
