forceinline DFA::Symbols::Symbols(const DFA& d) { const DFAI* o = static_cast<DFAI*>(d.object()); if (o != NULL) { c_trans = &o->trans[0]; e_trans = c_trans+o->n_trans; } else { c_trans = e_trans = NULL; } }
forceinline DFA::Transitions::Transitions(const DFA& d, int n) { const DFAI* o = static_cast<DFAI*>(d.object()); if (o != NULL) { int mask = (1<<o->n_log)-1; int p = n & mask; while ((o->table[p].fst != NULL) && (o->table[p].symbol != n)) p = (p+1) & mask; c_trans = o->table[p].fst; e_trans = o->table[p].lst; } else { c_trans = e_trans = NULL; } }