1 2 #include "leditdist.hpp" 3 #include "editdist.hpp" 4 5 #include <cassert> 6 7 namespace aspeller { edit_distance(ParmString a,ParmString b,int level,int limit,const EditDistanceWeights & w=EditDistanceWeights ())8 inline int edit_distance(ParmString a, ParmString b, 9 int level, // starting level 10 int limit, // maximum level 11 const EditDistanceWeights & w 12 = EditDistanceWeights()) 13 { 14 int score; 15 assert(level > 0 && limit >= level); 16 do { 17 if (level == 2) { 18 score = limit2_edit_distance(a,b,w); 19 } else if (level < 5) { 20 score = limit_edit_distance(a,b,level,w); 21 } else { 22 score = edit_distance(a,b,w); 23 } 24 ++level; 25 } while (score >= LARGE_NUM && level <= limit); 26 return score; 27 } 28 } 29