OLD | NEW |
1 #include "license.hunspell" | 1 #include "license.hunspell" |
2 #include "license.myspell" | 2 #include "license.myspell" |
3 | 3 |
4 #include <stdlib.h> | 4 #include <stdlib.h> |
5 #include <string.h> | 5 #include <string.h> |
6 #include <stdio.h> | 6 #include <stdio.h> |
7 #include <ctype.h> | 7 #include <ctype.h> |
8 | 8 |
9 #include "suggestmgr.hxx" | 9 #include "suggestmgr.hxx" |
10 #include "htypes.hxx" | 10 #include "htypes.hxx" |
(...skipping 805 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
816 ns = testsug(wlst, candidate, wl-1, ns, cpdsuggest, NULL, NULL); | 816 ns = testsug(wlst, candidate, wl-1, ns, cpdsuggest, NULL, NULL); |
817 if (ns == -1) return -1; | 817 if (ns == -1) return -1; |
818 tmpc = tmpc2; | 818 tmpc = tmpc2; |
819 } | 819 } |
820 return ns; | 820 return ns; |
821 } | 821 } |
822 | 822 |
823 // error is missing a letter it needs | 823 // error is missing a letter it needs |
824 int SuggestMgr::forgotchar(char ** wlst, const char * word, int ns, int cpdsugge
st) | 824 int SuggestMgr::forgotchar(char ** wlst, const char * word, int ns, int cpdsugge
st) |
825 { | 825 { |
826 char candidate[MAXSWUTF8L]; | 826 // TODO(rouslan): Remove the interim change below when this patch lands: |
| 827 // http://sf.net/tracker/?func=detail&aid=3595024&group_id=143754&atid=756395 |
| 828 char candidate[MAXSWUTF8L + 4]; |
827 char * p; | 829 char * p; |
828 clock_t timelimit = clock(); | 830 clock_t timelimit = clock(); |
829 int timer = MINTIMER; | 831 int timer = MINTIMER; |
830 int wl = strlen(word); | 832 int wl = strlen(word); |
831 // try inserting a tryme character before every letter (and the null terminat
or) | 833 // try inserting a tryme character before every letter (and the null terminat
or) |
832 for (int i = 0; i < ctryl; i++) { | 834 for (int i = 0; i < ctryl; i++) { |
833 strcpy(candidate, word); | 835 strcpy(candidate, word); |
834 for (p = candidate + wl; p >= candidate; p--) { | 836 for (p = candidate + wl; p >= candidate; p--) { |
835 *(p+1) = *p; | 837 *(p+1) = *p; |
836 *p = ctry[i]; | 838 *p = ctry[i]; |
837 ns = testsug(wlst, candidate, wl+1, ns, cpdsuggest, &timer, &timelimit)
; | 839 ns = testsug(wlst, candidate, wl+1, ns, cpdsuggest, &timer, &timelimit)
; |
838 if (ns == -1) return -1; | 840 if (ns == -1) return -1; |
839 if (!timer) return ns; | 841 if (!timer) return ns; |
840 } | 842 } |
841 } | 843 } |
842 return ns; | 844 return ns; |
843 } | 845 } |
844 | 846 |
845 // error is missing a letter it needs | 847 // error is missing a letter it needs |
846 int SuggestMgr::forgotchar_utf(char ** wlst, const w_char * word, int wl, int ns
, int cpdsuggest) | 848 int SuggestMgr::forgotchar_utf(char ** wlst, const w_char * word, int wl, int ns
, int cpdsuggest) |
847 { | 849 { |
848 w_char candidate_utf[MAXSWL]; | 850 // TODO(rouslan): Remove the interim change below when this patch lands: |
849 char candidate[MAXSWUTF8L]; | 851 // http://sf.net/tracker/?func=detail&aid=3595024&group_id=143754&atid=756395 |
| 852 w_char candidate_utf[MAXSWL + 1]; |
| 853 char candidate[MAXSWUTF8L + 4]; |
850 w_char * p; | 854 w_char * p; |
851 clock_t timelimit = clock(); | 855 clock_t timelimit = clock(); |
852 int timer = MINTIMER; | 856 int timer = MINTIMER; |
853 // try inserting a tryme character at the end of the word and before every le
tter | 857 // try inserting a tryme character at the end of the word and before every le
tter |
854 for (int i = 0; i < ctryl; i++) { | 858 for (int i = 0; i < ctryl; i++) { |
855 memcpy (candidate_utf, word, wl * sizeof(w_char)); | 859 memcpy (candidate_utf, word, wl * sizeof(w_char)); |
856 for (p = candidate_utf + wl; p >= candidate_utf; p--) { | 860 for (p = candidate_utf + wl; p >= candidate_utf; p--) { |
857 *(p + 1) = *p; | 861 *(p + 1) = *p; |
858 *p = ctry_utf[i]; | 862 *p = ctry_utf[i]; |
859 u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl + 1); | 863 u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl + 1); |
(...skipping 1287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2147 len++; | 2151 len++; |
2148 i--; | 2152 i--; |
2149 j--; | 2153 j--; |
2150 } else if (result[i*(n+1) + j] == LCS_UP) { | 2154 } else if (result[i*(n+1) + j] == LCS_UP) { |
2151 i--; | 2155 i--; |
2152 } else j--; | 2156 } else j--; |
2153 } | 2157 } |
2154 free(result); | 2158 free(result); |
2155 return len; | 2159 return len; |
2156 } | 2160 } |
OLD | NEW |