45 wfst_marks::wfst_marks(
int x)
52 p_mark_table =
new char *[x];
55 p_mark_table[i] =
new char[i+1];
56 for (j=0; j < i+1; j++)
57 p_mark_table[i][j] =
'?';
62 wfst_marks::~wfst_marks()
66 for (i=0; i < p_x; i++)
67 delete [] p_mark_table[i];
68 delete [] p_mark_table;
72 void wfst_marks::find_state_map(
EST_IVector &state_map,
int &num_new_states)
79 for (i=0,new_name=0; i < p_x; i++)
83 if (!distinguished(j,i))
85 state_map[i] = state_map[j];
88 if (state_map[i] == -1)
89 state_map[i] = new_name++;
92 num_new_states = new_name;
95 void add_assumption(
int y,
int z,
wfst_assumes &assumptions)
102 for (p=assumptions.
list.head(); p != 0; p=p->next())
104 if (assumptions.
list(p).k == y)
109 if (assumptions.
list(p).k == z)
131 int equivalent_to(
int y,
int z,
wfst_assumes &assumptions)
140 for (p=assumptions.
list.head(); p != 0; p=p->next())
142 if (assumptions.
list(p).k == y)
145 for (q=b.head(); q != 0; q=q->next())
149 if (assumptions.
list(p).k == z)
152 for (q=b.head(); q != 0; q=q->next())
165 for (p=assumptions.
list.head(); p != 0; p=p->next())
167 int x = assumptions.
list(p).k;
169 for (q=b.head(); q != 0; q=q->next())
170 marks.undistinguish(x,b(q));