// file: tie_state_constants.h
//
// definitions file for the state tying 
//

// make sure definitions are made only once
//
#ifndef __ISIP_TIE_STATE_CONSTANTS
#define __ISIP_TIE_STATE_CONSTANTS

// isip include files
//  
#ifndef __ISIP_INTEGRAL_CONSTANTS
#include <integral_constants.h>
#endif

// forward declaration of classes
//
#ifndef __ISIP_STATE_CONSTANTS
#include <state_constants.h>
#endif

#ifndef __ISIP_HASH_TABLE_CONSTANTS
#include <hash_table_constants.h>
#endif

#ifndef __ISIP_DECISION_TREE_CONSTANTS
#include <decision_tree_constants.h>
#endif

#ifndef __ISIP_DT_NODE_CONSTANTS
#include <dt_node_constants.h>
#endif

#ifndef __ISIP_CD_MODEL_CONSTANTS
#include <cd_model_constants.h>
#endif

// define the help file
//
#define TS_HELP_FILE (char_1*)"$ISIP_PROTO/doc/tie_state.help"

// commandline identifiers
//
#define TS_PARAM_OPT "-p"
#define TS_HELP_OPT "-help"

// parameter file field identifiers
//
#define TS_IN_MODELS (char_1*)"in_models_file"
#define TS_OUT_MODELS (char_1*)"out_models_file"
#define TS_IN_STATES (char_1*)"in_states_file"
#define TS_OUT_STATES (char_1*)"out_states_file"
#define TS_MEMBERSHIP (char_1*)"membership_file"
#define TS_MONOPHONE (char_1*)"monophone_file"
#define TS_OCCUPANCY (char_1*)"occupancy_file"
#define TS_OUT_TREE (char_1*)"out_tree_file"
#define TS_IN_TREE (char_1*)"in_tree_file"
#define TS_OUT_CLIST (char_1*)"out_clist_file"
#define TS_IN_PHONE (char_1*)"in_phlist_file"
#define TS_SPLIT_THRESHOLD (char_1*)"split_threshold"
#define TS_MERGE_THRESHOLD (char_1*)"merge_threshold"
#define TS_NUM_OCC_THRESHOLD (char_1*)"num_occ_threshold"
#define TS_NUM_CONTEXT (char_1*)"num_context"
#define TS_MODE (char_1*)"mode"
#define TS_OUTPUT_MODE (char_1*)"output_mode"
#define TS_DEBUG_LEVEL (char_1*)"debug_level"
#define TS_SPE_MODELS (char_1*)"special_models_file"

// identitifier in trees file
//
#define NUM_TREES (char_1*)"number_of_trees"
#define SPLIT_THRESHOLD (char_1*)"split_threshold"
#define MERGE_THRESHOLD (char_1*)"merge_threshold"
#define NUM_OCC_THRESHOLD (char_1*)"num_occ_threshold"

// mode
//
#define TS_TRAIN_MODE 0
#define TS_TRAIN "train"
#define TS_TEST_MODE 1
#define TS_TEST "test"

#define TS_ASCII_MODE 0
#define TS_ASCII "ascii"
#define TS_BINARY_MODE 1
#define TS_BINARY "binary"


// other parameters
//
#define TS_MAX_NUM_MODELS (long)99999

#define TS_DEFAULT_SPLIT_THRESHOLD DT_DEFAULT_SPLIT_THRESHOLD
#define TS_DEFAULT_MERGE_THRESHOLD DT_DEFAULT_MERGE_THRESHOLD
#define TS_DEFAULT_NUM_OCC_THRESHOLD DT_DEFAULT_NUM_OCC_THRESHOLD


// characters used to trigger filename expansion via a system call ---
// since this is expensive, we only want to do it when it is
// absolutely necessary
//
#define TS_ENV_DELIMITERS (char_1*)"$~(){}[]?"

// define some phyiscal limits on tasks handled
//
#define TS_MAX_NUM_MODELS (long)99999
#define TS_MAX_NUM_STATES (long)9999

// define the constant string
//
#define TS_STR_NUM_MODELS "num_models"
#define TS_STR_NUM_MONOPHONES "num_monophones"

// define the maximum number of states in a tree
//
#define TS_NUM_STATES (int_4)9999

// define the maximum number of letters in a phone
// 
#define TS_MAX_PHONE_LENGTH (int_4)64

// define a number representing context don't exist
//
#define TS_EMPTY_PHN (int_4)-5
#define TS_CDM_EMPTY_PHN CDM_EMPTY_PHN
#define TS_PH_LENGTH (int_4)8

// define number of questions
//
#define TS_NUM_QUESTIONS (int_4)1000

// define length of questions
//
#define TS_QUE_LENGTH (int_4)90

// define maximum number of special models
//
#define TS_MAX_NUM_SPEMODEL (int_4)90

// define the number of states in a model
//
#define TS_NUM_STATE_SIZE (int_4)3

// end of file
//
#endif
