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