isomorfeus-ferret 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (222) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +612 -0
  3. data/README.md +44 -0
  4. data/ext/isomorfeus_ferret_ext/benchmark.c +223 -0
  5. data/ext/isomorfeus_ferret_ext/benchmark.h +45 -0
  6. data/ext/isomorfeus_ferret_ext/benchmarks_all.h +25 -0
  7. data/ext/isomorfeus_ferret_ext/bm_bitvector.c +123 -0
  8. data/ext/isomorfeus_ferret_ext/bm_hash.c +118 -0
  9. data/ext/isomorfeus_ferret_ext/bm_micro_string.c +40 -0
  10. data/ext/isomorfeus_ferret_ext/bm_store.c +93 -0
  11. data/ext/isomorfeus_ferret_ext/email.rl +21 -0
  12. data/ext/isomorfeus_ferret_ext/extconf.rb +5 -0
  13. data/ext/isomorfeus_ferret_ext/fio_tmpfile.h +53 -0
  14. data/ext/isomorfeus_ferret_ext/frb_analysis.c +2577 -0
  15. data/ext/isomorfeus_ferret_ext/frb_index.c +3457 -0
  16. data/ext/isomorfeus_ferret_ext/frb_lang.c +9 -0
  17. data/ext/isomorfeus_ferret_ext/frb_lang.h +17 -0
  18. data/ext/isomorfeus_ferret_ext/frb_qparser.c +629 -0
  19. data/ext/isomorfeus_ferret_ext/frb_search.c +4460 -0
  20. data/ext/isomorfeus_ferret_ext/frb_store.c +515 -0
  21. data/ext/isomorfeus_ferret_ext/frb_threading.h +30 -0
  22. data/ext/isomorfeus_ferret_ext/frb_utils.c +1127 -0
  23. data/ext/isomorfeus_ferret_ext/frt_analysis.c +1644 -0
  24. data/ext/isomorfeus_ferret_ext/frt_analysis.h +247 -0
  25. data/ext/isomorfeus_ferret_ext/frt_array.c +124 -0
  26. data/ext/isomorfeus_ferret_ext/frt_array.h +54 -0
  27. data/ext/isomorfeus_ferret_ext/frt_bitvector.c +95 -0
  28. data/ext/isomorfeus_ferret_ext/frt_bitvector.h +586 -0
  29. data/ext/isomorfeus_ferret_ext/frt_compound_io.c +374 -0
  30. data/ext/isomorfeus_ferret_ext/frt_config.h +44 -0
  31. data/ext/isomorfeus_ferret_ext/frt_document.c +134 -0
  32. data/ext/isomorfeus_ferret_ext/frt_document.h +52 -0
  33. data/ext/isomorfeus_ferret_ext/frt_except.c +95 -0
  34. data/ext/isomorfeus_ferret_ext/frt_except.h +188 -0
  35. data/ext/isomorfeus_ferret_ext/frt_field_index.c +233 -0
  36. data/ext/isomorfeus_ferret_ext/frt_field_index.h +42 -0
  37. data/ext/isomorfeus_ferret_ext/frt_filter.c +157 -0
  38. data/ext/isomorfeus_ferret_ext/frt_fs_store.c +502 -0
  39. data/ext/isomorfeus_ferret_ext/frt_global.c +427 -0
  40. data/ext/isomorfeus_ferret_ext/frt_global.h +290 -0
  41. data/ext/isomorfeus_ferret_ext/frt_hash.c +518 -0
  42. data/ext/isomorfeus_ferret_ext/frt_hash.h +466 -0
  43. data/ext/isomorfeus_ferret_ext/frt_hashset.c +191 -0
  44. data/ext/isomorfeus_ferret_ext/frt_hashset.h +206 -0
  45. data/ext/isomorfeus_ferret_ext/frt_helper.c +62 -0
  46. data/ext/isomorfeus_ferret_ext/frt_helper.h +13 -0
  47. data/ext/isomorfeus_ferret_ext/frt_ind.c +353 -0
  48. data/ext/isomorfeus_ferret_ext/frt_ind.h +54 -0
  49. data/ext/isomorfeus_ferret_ext/frt_index.c +6377 -0
  50. data/ext/isomorfeus_ferret_ext/frt_index.h +880 -0
  51. data/ext/isomorfeus_ferret_ext/frt_lang.c +104 -0
  52. data/ext/isomorfeus_ferret_ext/frt_lang.h +44 -0
  53. data/ext/isomorfeus_ferret_ext/frt_mempool.c +87 -0
  54. data/ext/isomorfeus_ferret_ext/frt_mempool.h +33 -0
  55. data/ext/isomorfeus_ferret_ext/frt_multimapper.c +349 -0
  56. data/ext/isomorfeus_ferret_ext/frt_multimapper.h +52 -0
  57. data/ext/isomorfeus_ferret_ext/frt_posh.c +1006 -0
  58. data/ext/isomorfeus_ferret_ext/frt_posh.h +973 -0
  59. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.c +147 -0
  60. data/ext/isomorfeus_ferret_ext/frt_priorityqueue.h +147 -0
  61. data/ext/isomorfeus_ferret_ext/frt_q_boolean.c +1612 -0
  62. data/ext/isomorfeus_ferret_ext/frt_q_const_score.c +157 -0
  63. data/ext/isomorfeus_ferret_ext/frt_q_filtered_query.c +209 -0
  64. data/ext/isomorfeus_ferret_ext/frt_q_fuzzy.c +281 -0
  65. data/ext/isomorfeus_ferret_ext/frt_q_match_all.c +147 -0
  66. data/ext/isomorfeus_ferret_ext/frt_q_multi_term.c +672 -0
  67. data/ext/isomorfeus_ferret_ext/frt_q_parser.c +3084 -0
  68. data/ext/isomorfeus_ferret_ext/frt_q_phrase.c +1182 -0
  69. data/ext/isomorfeus_ferret_ext/frt_q_prefix.c +98 -0
  70. data/ext/isomorfeus_ferret_ext/frt_q_range.c +665 -0
  71. data/ext/isomorfeus_ferret_ext/frt_q_span.c +2386 -0
  72. data/ext/isomorfeus_ferret_ext/frt_q_term.c +311 -0
  73. data/ext/isomorfeus_ferret_ext/frt_q_wildcard.c +166 -0
  74. data/ext/isomorfeus_ferret_ext/frt_ram_store.c +460 -0
  75. data/ext/isomorfeus_ferret_ext/frt_scanner.c +899 -0
  76. data/ext/isomorfeus_ferret_ext/frt_scanner.h +28 -0
  77. data/ext/isomorfeus_ferret_ext/frt_scanner_mb.c +6705 -0
  78. data/ext/isomorfeus_ferret_ext/frt_scanner_utf8.c +4419 -0
  79. data/ext/isomorfeus_ferret_ext/frt_search.c +1824 -0
  80. data/ext/isomorfeus_ferret_ext/frt_search.h +924 -0
  81. data/ext/isomorfeus_ferret_ext/frt_similarity.c +150 -0
  82. data/ext/isomorfeus_ferret_ext/frt_similarity.h +79 -0
  83. data/ext/isomorfeus_ferret_ext/frt_sort.c +796 -0
  84. data/ext/isomorfeus_ferret_ext/frt_stopwords.c +395 -0
  85. data/ext/isomorfeus_ferret_ext/frt_store.c +680 -0
  86. data/ext/isomorfeus_ferret_ext/frt_store.h +789 -0
  87. data/ext/isomorfeus_ferret_ext/frt_term_vectors.c +72 -0
  88. data/ext/isomorfeus_ferret_ext/frt_threading.h +23 -0
  89. data/ext/isomorfeus_ferret_ext/frt_win32.h +54 -0
  90. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.c +409 -0
  91. data/ext/isomorfeus_ferret_ext/isomorfeus_ferret.h +95 -0
  92. data/ext/isomorfeus_ferret_ext/libstemmer.c +93 -0
  93. data/ext/isomorfeus_ferret_ext/libstemmer.h +73 -0
  94. data/ext/isomorfeus_ferret_ext/q_parser.y +1366 -0
  95. data/ext/isomorfeus_ferret_ext/scanner.h +28 -0
  96. data/ext/isomorfeus_ferret_ext/scanner.in +43 -0
  97. data/ext/isomorfeus_ferret_ext/scanner.rl +84 -0
  98. data/ext/isomorfeus_ferret_ext/scanner_mb.rl +200 -0
  99. data/ext/isomorfeus_ferret_ext/scanner_utf8.rl +85 -0
  100. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_danish.c +324 -0
  101. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_danish.h +7 -0
  102. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_dutch.c +610 -0
  103. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_dutch.h +6 -0
  104. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_english.c +1104 -0
  105. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_english.h +6 -0
  106. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_finnish.c +749 -0
  107. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_finnish.h +7 -0
  108. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_french.c +1233 -0
  109. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_french.h +6 -0
  110. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_german.c +490 -0
  111. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_german.h +6 -0
  112. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_hungarian.c +1217 -0
  113. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_hungarian.h +7 -0
  114. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_italian.c +1052 -0
  115. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_italian.h +6 -0
  116. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_norwegian.c +283 -0
  117. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_norwegian.h +6 -0
  118. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_porter.c +735 -0
  119. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_porter.h +6 -0
  120. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_portuguese.c +1003 -0
  121. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_portuguese.h +7 -0
  122. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_spanish.c +1079 -0
  123. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_spanish.h +6 -0
  124. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_swedish.c +293 -0
  125. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_1_swedish.h +6 -0
  126. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_romanian.c +984 -0
  127. data/ext/isomorfeus_ferret_ext/stem_ISO_8859_2_romanian.h +6 -0
  128. data/ext/isomorfeus_ferret_ext/stem_KOI8_R_russian.c +686 -0
  129. data/ext/isomorfeus_ferret_ext/stem_KOI8_R_russian.h +6 -0
  130. data/ext/isomorfeus_ferret_ext/stem_UTF_8_danish.c +325 -0
  131. data/ext/isomorfeus_ferret_ext/stem_UTF_8_danish.h +6 -0
  132. data/ext/isomorfeus_ferret_ext/stem_UTF_8_dutch.c +620 -0
  133. data/ext/isomorfeus_ferret_ext/stem_UTF_8_dutch.h +6 -0
  134. data/ext/isomorfeus_ferret_ext/stem_UTF_8_english.c +1111 -0
  135. data/ext/isomorfeus_ferret_ext/stem_UTF_8_english.h +6 -0
  136. data/ext/isomorfeus_ferret_ext/stem_UTF_8_finnish.c +754 -0
  137. data/ext/isomorfeus_ferret_ext/stem_UTF_8_finnish.h +6 -0
  138. data/ext/isomorfeus_ferret_ext/stem_UTF_8_french.c +1242 -0
  139. data/ext/isomorfeus_ferret_ext/stem_UTF_8_french.h +6 -0
  140. data/ext/isomorfeus_ferret_ext/stem_UTF_8_german.c +495 -0
  141. data/ext/isomorfeus_ferret_ext/stem_UTF_8_german.h +6 -0
  142. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hungarian.c +1220 -0
  143. data/ext/isomorfeus_ferret_ext/stem_UTF_8_hungarian.h +6 -0
  144. data/ext/isomorfeus_ferret_ext/stem_UTF_8_italian.c +1059 -0
  145. data/ext/isomorfeus_ferret_ext/stem_UTF_8_italian.h +6 -0
  146. data/ext/isomorfeus_ferret_ext/stem_UTF_8_norwegian.c +285 -0
  147. data/ext/isomorfeus_ferret_ext/stem_UTF_8_norwegian.h +6 -0
  148. data/ext/isomorfeus_ferret_ext/stem_UTF_8_porter.c +741 -0
  149. data/ext/isomorfeus_ferret_ext/stem_UTF_8_porter.h +6 -0
  150. data/ext/isomorfeus_ferret_ext/stem_UTF_8_portuguese.c +1009 -0
  151. data/ext/isomorfeus_ferret_ext/stem_UTF_8_portuguese.h +6 -0
  152. data/ext/isomorfeus_ferret_ext/stem_UTF_8_romanian.c +990 -0
  153. data/ext/isomorfeus_ferret_ext/stem_UTF_8_romanian.h +6 -0
  154. data/ext/isomorfeus_ferret_ext/stem_UTF_8_russian.c +680 -0
  155. data/ext/isomorfeus_ferret_ext/stem_UTF_8_russian.h +6 -0
  156. data/ext/isomorfeus_ferret_ext/stem_UTF_8_spanish.c +1083 -0
  157. data/ext/isomorfeus_ferret_ext/stem_UTF_8_spanish.h +6 -0
  158. data/ext/isomorfeus_ferret_ext/stem_UTF_8_swedish.c +294 -0
  159. data/ext/isomorfeus_ferret_ext/stem_UTF_8_swedish.h +6 -0
  160. data/ext/isomorfeus_ferret_ext/stem_UTF_8_turkish.c +2191 -0
  161. data/ext/isomorfeus_ferret_ext/stem_UTF_8_turkish.h +6 -0
  162. data/ext/isomorfeus_ferret_ext/stem_api.c +66 -0
  163. data/ext/isomorfeus_ferret_ext/stem_api.h +26 -0
  164. data/ext/isomorfeus_ferret_ext/stem_header.h +57 -0
  165. data/ext/isomorfeus_ferret_ext/stem_modules.h +190 -0
  166. data/ext/isomorfeus_ferret_ext/stem_modules.txt +50 -0
  167. data/ext/isomorfeus_ferret_ext/stem_utilities.c +478 -0
  168. data/ext/isomorfeus_ferret_ext/test.c +850 -0
  169. data/ext/isomorfeus_ferret_ext/test.h +416 -0
  170. data/ext/isomorfeus_ferret_ext/test_1710.c +63 -0
  171. data/ext/isomorfeus_ferret_ext/test_analysis.c +1221 -0
  172. data/ext/isomorfeus_ferret_ext/test_array.c +272 -0
  173. data/ext/isomorfeus_ferret_ext/test_bitvector.c +600 -0
  174. data/ext/isomorfeus_ferret_ext/test_compound_io.c +170 -0
  175. data/ext/isomorfeus_ferret_ext/test_document.c +156 -0
  176. data/ext/isomorfeus_ferret_ext/test_except.c +244 -0
  177. data/ext/isomorfeus_ferret_ext/test_fields.c +522 -0
  178. data/ext/isomorfeus_ferret_ext/test_file_deleter.c +185 -0
  179. data/ext/isomorfeus_ferret_ext/test_filter.c +331 -0
  180. data/ext/isomorfeus_ferret_ext/test_fs_store.c +25 -0
  181. data/ext/isomorfeus_ferret_ext/test_global.c +299 -0
  182. data/ext/isomorfeus_ferret_ext/test_hash.c +485 -0
  183. data/ext/isomorfeus_ferret_ext/test_hashset.c +288 -0
  184. data/ext/isomorfeus_ferret_ext/test_helper.c +47 -0
  185. data/ext/isomorfeus_ferret_ext/test_highlighter.c +548 -0
  186. data/ext/isomorfeus_ferret_ext/test_index.c +2323 -0
  187. data/ext/isomorfeus_ferret_ext/test_lang.c +74 -0
  188. data/ext/isomorfeus_ferret_ext/test_mempool.c +102 -0
  189. data/ext/isomorfeus_ferret_ext/test_multimapper.c +64 -0
  190. data/ext/isomorfeus_ferret_ext/test_priorityqueue.c +213 -0
  191. data/ext/isomorfeus_ferret_ext/test_q_const_score.c +84 -0
  192. data/ext/isomorfeus_ferret_ext/test_q_filtered.c +61 -0
  193. data/ext/isomorfeus_ferret_ext/test_q_fuzzy.c +241 -0
  194. data/ext/isomorfeus_ferret_ext/test_q_parser.c +464 -0
  195. data/ext/isomorfeus_ferret_ext/test_q_span.c +575 -0
  196. data/ext/isomorfeus_ferret_ext/test_ram_store.c +77 -0
  197. data/ext/isomorfeus_ferret_ext/test_search.c +1874 -0
  198. data/ext/isomorfeus_ferret_ext/test_segments.c +167 -0
  199. data/ext/isomorfeus_ferret_ext/test_similarity.c +25 -0
  200. data/ext/isomorfeus_ferret_ext/test_sort.c +333 -0
  201. data/ext/isomorfeus_ferret_ext/test_store.c +591 -0
  202. data/ext/isomorfeus_ferret_ext/test_store.h +3 -0
  203. data/ext/isomorfeus_ferret_ext/test_term.c +351 -0
  204. data/ext/isomorfeus_ferret_ext/test_term_vectors.c +373 -0
  205. data/ext/isomorfeus_ferret_ext/test_test.c +83 -0
  206. data/ext/isomorfeus_ferret_ext/test_threading.c +188 -0
  207. data/ext/isomorfeus_ferret_ext/testhelper.c +561 -0
  208. data/ext/isomorfeus_ferret_ext/testhelper.h +25 -0
  209. data/ext/isomorfeus_ferret_ext/tests_all.h +87 -0
  210. data/ext/isomorfeus_ferret_ext/uchar-ucs4.rl +1854 -0
  211. data/ext/isomorfeus_ferret_ext/uchar-utf8.rl +1999 -0
  212. data/ext/isomorfeus_ferret_ext/url.rl +27 -0
  213. data/ext/isomorfeus_ferret_ext/word_list.h +15156 -0
  214. data/lib/isomorfeus/ferret/document.rb +132 -0
  215. data/lib/isomorfeus/ferret/field_symbol.rb +85 -0
  216. data/lib/isomorfeus/ferret/index/field_infos.rb +48 -0
  217. data/lib/isomorfeus/ferret/index/index.rb +970 -0
  218. data/lib/isomorfeus/ferret/monitor.rb +323 -0
  219. data/lib/isomorfeus/ferret/stdlib_patches.rb +151 -0
  220. data/lib/isomorfeus/ferret/version.rb +5 -0
  221. data/lib/isomorfeus-ferret.rb +8 -0
  222. metadata +307 -0
@@ -0,0 +1,561 @@
1
+ #include "testhelper.h"
2
+ #include <stdlib.h>
3
+ #include <string.h>
4
+ #include <stdio.h>
5
+ #include <ctype.h>
6
+
7
+ const char *test_word_list[] = {
8
+ "desirous", "hollowness's", "camp's", "Senegal", "broadcaster's",
9
+ "pecking", "Provence", "paternalism", "premonition", "Dumbo's",
10
+ "Darlene's", "Elbert's", "substrate", "Camille", "Menkalinan", "Cooper",
11
+ "decamps", "abatement's", "bindings", "scrubby", "subset", "ancestor's",
12
+ "pelagic", "abscissa", "loofah's", "gleans", "boudoir", "disappointingly",
13
+ "guardianship's", "settlers", "Mylar", "timetable's", "parabolic",
14
+ "madams", "bootlegger's", "monotonically", "gage", "Karyn's", "deposed",
15
+ "boozy", "swordfish's", "Chevron", "Victrola", "Tameka", "impels",
16
+ "carrels", "salami's", "celibate", "resistance's", "duration",
17
+ "abscissae", "Kilroy's", "corrosive", "flight's", "flapper", "scare",
18
+ "peppiest", "Pygmies", "Menzies", "wrist's", "enumerable", "housecoats",
19
+ "Khwarizmi's", "stampeding", "hungering", "steeping", "Yemenis",
20
+ "entangles", "solver", "mishapping", "Rand's", "ninety", "Boris",
21
+ "impedimenta", "predators", "ridge", "wretchedness's", "crapping", "Head",
22
+ "Edwards", "Claude's", "geodesics", "verities", "botch", "Short's",
23
+ "vellum's", "coruscates", "hydrogenates", "Haas's", "deceitfulness",
24
+ "cohort's", "Cepheus", "totes", "Cortez's", "napalm", "fruitcake",
25
+ "coordinated", "Coulomb", "desperation", "behoves", "contractor's",
26
+ "vacationed", "Wanamaker's", "leotard", "filtrated", "cringes", "Lugosi",
27
+ "sheath's", "orb", "jawed", "Isidro", "geophysics", "persons", "Asians",
28
+ "booze's", "eight's", "backslappers", "hankered", "dos", "helpings",
29
+ "tough", "interlarding", "gouger", "inflect", "Juneau's", "hay's",
30
+ "sardining", "spays", "Brandi", "depressant", "space", "assess",
31
+ "reappearance's", "Eli's", "Cote", "Enoch", "chants", "ruffianing",
32
+ "moralised", "unsuccessfully", "or", "Maryland's", "mildest", "unsafer",
33
+ "dutiful", "Pribilof", "teas", "vagued", "microbiologists", "hedgerow",
34
+ "speller's", "conservators", "catharsis", "drawbacks", "whooshed",
35
+ "unlawful", "revolve", "craftsmanship", "destabilise", "Margarito",
36
+ "Asgard's", "spawn's", "Annabel's", "canonicals", "buttermilk",
37
+ "exaltation's", "pothole", "reprints", "approximately", "homage",
38
+ "Wassermann's", "Atlantic's", "exacerbated", "Huerta", "keypunching",
39
+ "engagements", "dilate", "ponchos", "Helvetius", "Krakatoa", "basket's",
40
+ "stepmother", "schlock's", "drippings", "cardiology's", "northwesterly",
41
+ "cruddier", "poesies", "rustproof", "climb", "miscalled", "Belgians",
42
+ "Iago", "brownout", "nurseries", "hooliganism's", "concourse's",
43
+ "advocate", "sunrise's", "hyper", "octopus's", "erecting",
44
+ "counterattacking", "redesign", "studies", "nitrating", "milestone",
45
+ "bawls", "Nereid", "inferring", "Ontario's", "annexed", "treasury",
46
+ "cosmogony's", "scandalised", "shindig's", "detention's",
47
+ "Lollobrigida's", "eradicating", "magpie", "supertankers", "Adventist's",
48
+ "dozes", "Artaxerxes", "accumulate", "dankest", "telephony", "flows",
49
+ "Srivijaya's", "fourteen's", "antonym", "rancid", "briefing's",
50
+ "theologian", "Jacuzzi", "gracing", "chameleon's", "Brittney's",
51
+ "Pullmans", "Robitussin's", "jitterier", "mayonnaise's", "fort",
52
+ "closeouts", "amatory", "Drew's", "cockfight", "pyre", "Laura's",
53
+ "Bradley's", "obstructionists", "interventions", "tenderness's",
54
+ "loadstones", "castigation's", "undercut", "volubly", "meditated",
55
+ "Ypsilanti", "Jannie's", "tams", "drummer's", "inaugurations", "mawing",
56
+ "Anglophile", "Sherpa", "footholds", "Gonzalo", "removers",
57
+ "customisation", "procurement's", "allured", "grimaced", "captaining",
58
+ "liberates", "grandeur's", "Windsor", "screwdrivers", "Flynn's",
59
+ "extortionists", "carnivorous", "thinned", "panhandlers", "trust's",
60
+ "bemoaned", "untwisted", "cantors", "rectifies", "speculation",
61
+ "niacin's", "soppy", "condom", "halberd", "Leadbelly", "vocation's",
62
+ "tanners", "chanticleer", "secretariats", "Ecuador's", "suppurated",
63
+ "users", "slag's", "atrocity's", "pillar", "sleeveless", "bulldozers",
64
+ "turners", "hemline", "astounded", "rosaries", "Mallarmé", "crucifies",
65
+ "Maidenform", "contribution", "evolve", "chemicals", "uteri",
66
+ "expostulation", "roamers", "daiquiris", "arraignment", "ribs", "King's",
67
+ "Persepolis", "arsenic's", "blindfolds", "bloodsucker's", "restocks",
68
+ "falconry", "Olympia's", "Colosseum's", "vigils", "Louie's",
69
+ "unwillingly", "sealed", "potatoes", "Argentine", "audit's", "outworn",
70
+ "boggles", "likely", "alleging", "Tinkerbell", "redistribution's",
71
+ "Normandy", "Cortes", "porter's", "buntings", "cornucopias", "rosewoods",
72
+ "shelf's", "airdrops", "summits", "Rosalyn", "redecorating", "twirlers",
73
+ "monsters", "directed", "semiautomatics", "Foch", "Hobart", "mutilates",
74
+ "Wilma's", "ornamenting", "Clifford's", "pyromania", "Strasbourg",
75
+ "bleeders", "additions", "super", "effortlessly", "piecing", "vacations",
76
+ "gybes", "warranted", "Ting", "her", "histrionic", "marshaled", "spore's",
77
+ "villainy's", "brat", "confusion", "amphitheatre's", "adjourns",
78
+ "guzzled", "Visayans", "rogue's", "morsels", "candlestick", "flaks",
79
+ "Waterbury", "pulp's", "endorser's", "postdoc", "coffining", "swallowing",
80
+ "Wrangell", "Marcie's", "Marley", "untapped", "fear's", "Kant",
81
+ "pursuit's", "normally", "jackals", "orals", "Paramaribo's", "Marilyn's",
82
+ "Diem's", "narrower", "medicinally", "chickweed's", "pretentiousness",
83
+ "Lardner", "baritone's", "purrs", "Pam's", "pestles", "Philip's",
84
+ "Titania", "eccentrics", "Albion's", "greed's", "raggediest",
85
+ "importations", "Truman", "incentives", "typified", "incurred",
86
+ "bandstands", "Minnie's", "pleasant", "Sandy's", "perplexities",
87
+ "crease's", "obliques", "backstop", "Nair's", "perusing", "Quixote's",
88
+ "sicknesses", "vapour's", "butte", "lariats", "disfavours", "McGuffey",
89
+ "paediatric", "filtered", "whiff's", "gunboats", "devolved",
90
+ "extravaganza's", "organism", "giggling", "citadel's", "counterbalances",
91
+ "executrixes", "Cathay", "marshmallow's", "iniquitous", "Katmai", "Siva",
92
+ "welled", "impertinence's", "plunger", "rice", "forgers", "Larousse",
93
+ "pollution's", "medium", "residue's", "rumbas", "Odis", "arrogant",
94
+ "Jasper's", "panged", "doubted", "vistaing", "decibel's", "modulus's",
95
+ "chickpea's", "mugger's", "potentates", "sequesters", "academy's",
96
+ "Turk's", "pharmacology's", "defogger", "clomp", "soulless", "elastic",
97
+ "la's", "shards", "unfortunate", "counterclaim's", "objections", "towel",
98
+ "converged", "z", "ionisation", "stirrups", "antiquarians", "constructor",
99
+ "virtuosity's", "Göteborg", "centigramme's", "translators", "dalliance's",
100
+ "us", "bullfight", "drawer's", "nonconformist", "handcrafts", "Magritte",
101
+ "tulle", "plant's", "routine", "colour's", "latency's", "repertoire's",
102
+ "photocopies", "catalyse", "ashrams", "lagging", "flapjack's",
103
+ "ayatollahs", "decentest", "pitted", "conformity", "jack", "batsman",
104
+ "electrifies", "Unitarians", "obtain", "medicates", "tumour's",
105
+ "nutritionally", "haystack", "bustles", "slut", "satirising", "birettas",
106
+ "starring", "Kubrick's", "flogs", "chequering", "Menkalinan's",
107
+ "Barbados's", "Bioko", "swinish", "hades", "perjured", "timing's",
108
+ "cocaine", "ejecting", "rationalises", "dilettante's", "umping",
109
+ "capsized", "frogmen", "matt", "prostituting", "bola's", "devolution's",
110
+ "poxing", "Maritza's", "snob's", "scoped", "Costco", "feral", "sirocco",
111
+ "rebating", "truculence", "junkier", "nabs", "elicit", "allegiance",
112
+ "care", "arteriosclerosis's", "nonproliferation's", "doxologies",
113
+ "disconsolate", "bodega", "designers", "Rembrandt", "apostasies",
114
+ "garrulousness", "Hertzsprung's", "hayseeds", "noncooperation's",
115
+ "resentment", "cuticles", "sandboxes", "gimmicks", "magnolia",
116
+ "invalidity's", "pulverised", "Tinkerbell's", "hypoglycemics",
117
+ "gunboat's", "workbench's", "fleetingly's", "sportsman's", "trots",
118
+ "decomposes", "discrepancies", "owls", "obscener", "organic", "stoutness",
119
+ "councillor's", "Philippine's", "Aline", "coarsening", "suffocated",
120
+ "infighting's", "peculiarity", "roof's", "premier", "sucked", "churl",
121
+ "remounts", "intends", "wiles", "unfold", "unperturbed", "wainscotings",
122
+ "restfuller", "ashtray's", "wader's", "decanters", "gild", "tandems",
123
+ "spooked", "galling", "annuity's", "opacity", "clamour's", "flaccid",
124
+ "caroming", "savvying", "mammalian's", "toadstool's", "doohickey", "jibs",
125
+ "conquests", "dishes", "effusively", "distinctions", "curly", "Peckinpah",
126
+ "whining", "quasar", "sponge", "infrequent", "Novembers", "cowling",
127
+ "poem's", "muzzles", "Sufi", "authoritarians", "prompts", "Gavin's",
128
+ "morphology's", "shenanigan", "narrated", "rapprochement", "Heine",
129
+ "propane's", "addition", "prefect's", "pining", "dwindles",
130
+ "compulsiveness's", "objectors", "trudging", "segregates", "language",
131
+ "enthralled", "explosiveness", "toeing", "drainers", "Merrimack's",
132
+ "smarten", "bigwig's", "embroiders", "Medicaids", "grammar's", "behest's",
133
+ "chiseled", "equalled", "factual", "Casablanca's", "dams",
134
+ "disillusioned", "turtleneck", "Baden", "provinces", "bushwhacked", "fey",
135
+ "Yangtze", "loan's", "decent", "strobe", "challenger's", "hometown",
136
+ "Neal", "Ernestine's", "magnetises", "minute", "patrol", "Starbucks",
137
+ "Bernstein", "signal", "interplanetary", "tweak", "archdeacon",
138
+ "untoward", "transducer", "azaleas", "levied", "worlds", "talks",
139
+ "Tancred", "hairsplitting's", "edibility's", "confab", "rosetted",
140
+ "Spanish", "Americanisation", "Charley", "realm's", "incongruities",
141
+ "chinstraps", "dollhouses", "binocular", "popgun", "physiotherapy's",
142
+ "knave's", "angelically", "heartbreaking", "clarions", "bespeaks",
143
+ "pivotal", "Zosma", "ungrammatical", "dilution", "tidily", "Dejesus's",
144
+ "taller", "pennyweight's", "freshman", "Jamestown", "chiefer", "amen",
145
+ "attiring", "appurtenance's", "opiates", "mottoes", "towellings", "ashen",
146
+ "font's", "spoors", "pupil", "groom's", "skimpy", "achieves",
147
+ "intolerance's", "ardour's", "exorcist", "bottoming", "snag's",
148
+ "Frenches", "hysteric's", "ladyfinger's", "differences", "seed",
149
+ "clubfoot's", "glades", "Elton's", "jargon", "Waldo", "grinning",
150
+ "coherence's", "winos", "turnround", "appended", "Ethelred's", "delete",
151
+ "steadfastness's", "miss", "thermoplastic", "depraves", "unctuous",
152
+ "reanimates", "transfusing", "protects", "Babbage's", "foists", "inn",
153
+ "etched", "sanctimoniously", "idling", "timepiece", "holistic",
154
+ "waterside", "ulna's", "swindled", "employables", "zebra", "nieces",
155
+ "pertained", "usages", "vamp's", "Larry's", "cooler's", "holographs",
156
+ "clewing", "stubborning", "peaked", "underfeeds", "marshmallows",
157
+ "agreeable", "beards", "Slovenia's", "nitroglycerin", "palls", "impurer",
158
+ "armours", "stomachaches", "notification's", "Dixieland's", "crozier's",
159
+ "neurotic", "kudos", "Tania's", "M", "soundtrack's", "territory's",
160
+ "sped", "house's", "divisibility", "ingress's", "pummelled", "Isabel",
161
+ "Dewitt", "seemly", "hutched", "calliope", "lengthwise", "flubs",
162
+ "Moldavia's", "Mercia", "McBride's", "Lenten", "pulverise", "football",
163
+ "oligarchy", "Max", "scribbler", "acclimatize", "brainwashes",
164
+ "apprenticed", "benevolences", "two", "Wodehouse", "crew's", "massacre",
165
+ "proportionals", "Jewishness's", "instep's", "emissary", "folder",
166
+ "nonentity's", "convinced", "caption", "kangarooed", "dogie",
167
+ "vagabonding", "auction's", "appraising", "antimony", "part's",
168
+ "longitude's", "inconsiderateness's", "pawning", "serer", "solos",
169
+ "histories", "mushy", "parturition", "munched", "oregano", "inanest",
170
+ "dryness", "kitchenware", "unexpected", "covens", "cheesecakes",
171
+ "stakeout's", "Pulaski's", "Yoknapatawpha's", "pinhead", "drifted",
172
+ "guzzler's", "funking", "sou'wester", "oesophagus's", "highbrow",
173
+ "contralto", "meningitis", "Mazzini", "raggedest", "vaginas", "misfiring",
174
+ "margaritas", "wedder", "pointed", "slicked", "garlanded", "comeuppances",
175
+ "vassals", "Sui", "Concord", "bozos", "Garry's", "Maribel's", "epileptic",
176
+ "Jehoshaphat's", "revolutionary's", "kneecaps", "songbird", "actively",
177
+ "Meredith", "toddler", "distrusting", "fuchsias", "perusal", "instills",
178
+ "deathbed", "sunspot's", "spatula's", "Muscovy", "humaniser", "Keats",
179
+ "regrets", "deflect", "theories", "nonpluses", "populating", "leniency's",
180
+ "penicillin's", "gaol's", "borough", "moose's", "dogmata",
181
+ "transcendentally", "supposition's", "nursed", "Gagarin's", "honest",
182
+ "Chandrasekhar's", "mudslinger's", "parable", "bonged", "Wyeth's",
183
+ "Ochoa's", "Grenoble", "steamy", "halter's", "rotisserie's", "pagoda's",
184
+ "wallaby's", "Yank", "pretzel", "rapist's", "estrange", "hectored",
185
+ "Puebla's", "conniver", "creditor's", "dole's", "Fotomat", "patents",
186
+ "heckling", "thickener", "etches", "yogi", "hemstitched", "obverses",
187
+ "Lipizzaner", "divert", "Strong's", "sagest", "Alabama", "He", "Carrie's",
188
+ "obligation's", "verity's", "outed", "Rhee", "bluffed", "codas",
189
+ "crèche's", "unpalatable", "dilettanti", "vestment", "purse's",
190
+ "inflammation's", "bookmarked", "doing's", "whinnying", "impersonators",
191
+ "Theiler", "scurried", "resistor", "southerners", "Anacreon",
192
+ "reconstruction's", "footage", "trespassing", "Kafka", "bottling",
193
+ "stays", "Gretzky", "overburdening", "princesses", "weathercock's",
194
+ "atolls", "cheerier", "packet", "surrenders", "teacup", "Sabik's",
195
+ "undecidable", "lollygagged", "pawl's", "anaesthesiology", "sublimely",
196
+ "contortionists", "motorcades", "Maureen", "lamasery", "yourselves",
197
+ "Creighton", "poliomyelitis's", "civil", "outmanoeuvre", "lauded",
198
+ "closeness", "Humboldt's", "pretzels", "ungrudging", "blackguard's",
199
+ "sickles", "typo", "narcotics", "linesman", "psychotics", "pictured",
200
+ "deviltry", "Yahtzee", "Lovelace's", "cerebra", "airiness's", "bewitch",
201
+ "how", "motherland's", "crate's", "Keenan's", "turnstile's",
202
+ "pedometer's", "carted", "slipping", "fallow", "Canadian", "ladybird's",
203
+ "thump", "shopper's", "enters", "scowls", "nematode", "focused",
204
+ "Riley's", "grainiest", "novas", "snuffled", "leftovers", "deify",
205
+ "Samoan", "pruning", "contenting", "Khachaturian's", "triads",
206
+ "genealogies", "psalmist", "shaming", "appropriated", "ignominies",
207
+ "Beadle's", "MHz", "peerages", "facile", "Seoul", "Janna's", "jig's",
208
+ "mousiness's", "funnier", "delimiter", "watermark", "sheik's", "Reasoner",
209
+ "ipecac's", "curdles", "wronged", "Segovia's", "solders", "Dunne's",
210
+ "contractor", "awards", "hostels", "pinkie's", "Herzl", "misplace",
211
+ "shuttle", "innovative", "vestries", "cosmoses", "trikes", "Casandra's",
212
+ "hokier", "carouser's", "summerhouses", "renascence", "decomposed",
213
+ "Balzac's", "outlast", "shod", "squalling", "smugging", "weighing",
214
+ "omega's", "selects", "fleetingly", "Finland", "petted", "disrespects",
215
+ "fetter", "confound", "brads", "Bosnia's", "preposition's", "guy's",
216
+ "different", "tracts", "paediatrics's", "polygon", "eyetooth's", "Aesop",
217
+ "pentagons", "professions", "homeowner", "looter's", "intimidated",
218
+ "lustre's", "loneliness", "catnapped", "counties", "pailful",
219
+ "Christendom's", "Barents", "penis", "Mumford's", "Nigel", "éclairs",
220
+ "splats", "diabolical", "popularly", "quart", "abjected", "Rasalgethi",
221
+ "camel's", "inimical", "overweening", "distention's", "Advil", "casement",
222
+ "seamier", "avaricious", "sierra's", "caparison's", "moldered", "Cortez",
223
+ "handmaid's", "disappointment", "billowed", "overpopulated", "outsets",
224
+ "ray", "smoother", "overkill", "somber", "tiller's", "zigzag", "adviser",
225
+ "absorption's", "sturdily", "hairy", "bloodmobile", "investiture's",
226
+ "creature", "ripeness's", "Jonathon", "arborvitae's", "skulduggery",
227
+ "bog", "skeleton's", "Kit's", "Panamas", "Ashlee's", "jazzy", "snit",
228
+ "divisive", "caribous", "permuting", "frankest", "annotated", "oak's",
229
+ "meg's", "Gill", "burrito", "dormancy's", "offings", "Nike",
230
+ "outnumbered", "skater's", "Portugal", "deficit", "Cannon's", "pockmark",
231
+ "sediment's", "mailbox", "innuendoed", "retire", "wolfhound's",
232
+ "nicotine's", "brigade's", "mettle's", "softhearted", "hooey's",
233
+ "abdication", "Orval", "Jaime", "ship", "hyphenations", "sectarians",
234
+ "Alabaman", "tagging", "ultras", "schizoids", "medicines", "undersized",
235
+ "Gray", "maternity's", "bandaging", "scooping", "coercion's", "serapes",
236
+ "celebrate", "Listerine's", "throve", "crypt's", "nearsighted",
237
+ "metallurgists", "Delicious", "cotton's", "yoked", "cogitates",
238
+ "underage", "cigarette's", "hallways", "Cointreau", "ma'am", "spacing's",
239
+ "foresight", "parkway's", "Edwardian", "mediator", "Turner", "Derrida's",
240
+ "motorist's", "hobo", "equivalences", "sophism", "peeping", "telescoped",
241
+ "overproduce", "ductility", "Leblanc", "refractory", "passé", "decodes",
242
+ "womanising", "flax's", "pond's", "infrequency", "talkativeness's",
243
+ "settlement's", "Prince", "bating", "multimillionaire", "Schultz",
244
+ "premiss", "quackery", "bathhouse", "Leno's", "Monday's", "Hung's",
245
+ "undaunted", "bewaring", "tension's", "Chile's", "Rostand's", "platoons",
246
+ "rodeo's", "Dionne", "Dyson's", "gingivitis's", "fewer",
247
+ "electromagnetism's", "scrubbier", "ensconced", "wretcheder", "mica's",
248
+ "expectorant", "snapper's", "chastised", "habitation", "spry", "bathing",
249
+ "stealth's", "champagnes", "baleful", "fencing's", "threaded", "codicils",
250
+ "disgraced", "redcaps", "addends", "Olivier", "clasped", "Gwendolyn",
251
+ "foment", "angularity's", "strenuously", "gorilla", "misbehaved",
252
+ "surplus's", "newsier", "positioned", "bloodmobiles", "circumstantials",
253
+ "person's", "varicose", "Calliope", "plethora", "Olmsted",
254
+ "reconciliation", "Brendan's", "beset", "totters", "sailors",
255
+ "parliamentarians", "Whitaker", "hilts", "pummelling", "academician's",
256
+ "ruse", "discreeter", "appetisingly", "perfections", "anus", "overrode",
257
+ "pedantry's", "possessed", "germs", "unscrews", "expired",
258
+ "semitrailer's", "Cupid's", "nonsmoker", "Marathon", "secs", "Hopkins",
259
+ "freeing", "libelled", "furious", "staccatos", "electroencephalogram's",
260
+ "malingerer's", "impulses", "briars", "Tran", "hilltops", "sulks",
261
+ "quailed", "fads", "retrenches", "spouted", "outtake", "puncture's",
262
+ "rats", "kibitzed", "berets", "omnivorous", "flange", "Mons", "glints",
263
+ "mansards", "thou", "cuing", "suspected", "Kaiser's", "savvier", "skits",
264
+ "interdict's", "Booker", "Rubinstein", "Tm's", "crossing's", "dewlap",
265
+ "guarantor's", "edification's", "joyfullest", "crossed", "chowdering",
266
+ "sillier", "reloading", "commodity's", "bodkins", "conduced", "coughs",
267
+ "nucleus's", "sixtieth", "proverbially", "comprehensive", "ineluctably",
268
+ "patrolmen", "resuscitating", "carpetbag's", "Darrin's", "Yeager",
269
+ "Bataan's", "spoonsful", "proceeds", "wrongdoer", "Karroo", "heart",
270
+ "poison", "typifying", "endowment's", "aquanauts", "deaconesses",
271
+ "homosexuality", "Maxine", "haunching", "centred", "Peking's",
272
+ "toothiest", "growers", "firebombs", "throbs", "Downy", "contribution's",
273
+ "sago's", "Cole", "Knoxville", "leftmost", "Nell's", "Baffin", "barrings",
274
+ "contagions", "disencumbers", "countdown", "quintuple", "perihelion",
275
+ "creationism's", "actioning", "admiralty", "Mt's", "durability's",
276
+ "sewer's", "replicas", "oxide", "ripened", "Pisces's", "Cinerama's",
277
+ "catheters", "oppressive", "roosting", "foggiest", "properly", "Kareem",
278
+ "Ollie", "minuted", "vehicles", "eel", "remunerates", "swashbuckler's",
279
+ "remunerative", "sanguining", "Belem's", "forlornly", "rudders",
280
+ "officialdom", "countertenors", "Upton", "whoop", "animations", "arouses",
281
+ "millionths", "videocassette", "fledgling", "shake", "exterminated",
282
+ "Cain's", "trendiest", "wariest", "torpedoes", "airmails", "Cameron's",
283
+ "discord's", "spitefulness's", "thudded", "menaced", "takeovers",
284
+ "solicited", "wallpapers", "economic", "cache", "rechargeable", "gongs",
285
+ "droning", "exemption", "Alaskans", "toothed", "snifter", "Stephens",
286
+ "prejudge", "doctor's", "bobolinks", "rotates", "valuation's", "narrator",
287
+ "weaning", "uncle", "shelter", "destitution's", "Edgardo's", "gauge",
288
+ "Nice", "Adolf's", "rheumatics", "inheritances", "undesirables",
289
+ "Eileen's", "flyweight's", "scope", "possessiveness", "tipsily",
290
+ "effulgence", "rematch", "Baltic", "unsteadiest", "rodeos", "gloaming's",
291
+ "ringers", "randomised", "commissars", "destroyer's", "router",
292
+ "disengaging", "it's", "Albert", "rampantly", "varmint", "Adkins",
293
+ "chevron", "insomniac", "bobsledded", "masochist's", "chronometers",
294
+ "compaction", "Mauro", "sidled", "Highlander's", "snail's", "syllabifies",
295
+ "application's", "symmetrical", "blacking", "accent's", "sentimentalists",
296
+ "sonatas", "profanities", "sloping", "Araby", "percolate", "repeated",
297
+ "youthfulness's", "Loyola", "deliriously", "matriarch's", "tailors",
298
+ "rerouting", "hairpin", "dispersal", "endowment", "disquieting", "swat",
299
+ "neckerchieves", "wrinkles", "amoebas", "Darcy", "orthodontics's",
300
+ "milder", "sneezing", "prescience's", "pads", "wrought", "perspicuity's",
301
+ "materialist", "pull", "laundryman's", "lazily", "protractor's", "Vic",
302
+ "photocopier", "guardrooms", "cablecasting", "confirms", "excretions",
303
+ "combatant", "counterfeiters", "periwig", "genteelest", "router's",
304
+ "springy", "procreated", "syphon", "parent's", "bigwigs", "rebelled",
305
+ "milkmaids", "McGee's", "seaworthier", "Bellatrix's", "tenement",
306
+ "embryologists", "Vaselining", "burrow's", "tonnage's", "Petty's",
307
+ "chancels", "scouring", "mouser", "recompensed", "guarding", "editor",
308
+ "raster", "bourgeoisie's", "interpolating", "skinflint's", "transport",
309
+ "bullfinch", "needlessly", "withholds", "counterclockwise", "panicking",
310
+ "Ahriman", "flambeing", "contrary", "heartstrings", "whittled", "crib's",
311
+ "highlighter", "extroverted", "Martinique's", "racquets", "Maldivian",
312
+ "physiognomy", "Hammarskjold", "massage", "shingling", "neighbourhood",
313
+ "boobed", "vulture", "intercontinental", "cobblers", "peddlers",
314
+ "forthrightly", "germicide", "raindrop's", "fir's", "decaffeinates",
315
+ "wobblier", "abnegated", "cruiser's", "satiety", "trilled", "impending",
316
+ "gulf", "mountebank", "beltway", "reappointment", "cinematographer",
317
+ "pylon", "penthouses", "morally", "installs", "Walsh's", "drawstring",
318
+ "circus's", "Khayyam's", "Myrtle's", "ventrals", "category's",
319
+ "opportunistic", "grovelling", "warier", "upchuck", "hairdresser's",
320
+ "Montanans", "jobber", "dazzle", "encirclement's", "muffin's", "coronets",
321
+ "focus's", "footfall's", "subjunctives", "late", "pedagogued",
322
+ "dignitaries", "content", "blockbusters", "reminiscent", "mayor",
323
+ "specifier", "extinction", "nutshell's", "catbird's", "bundle",
324
+ "gracefulness", "exceed", "estranges", "chancy", "bankrupted", "Avery",
325
+ "Barnett", "succulence", "stacking", "ensnare", "truck", "embargo",
326
+ "persecutes", "translation's", "muskrat's", "illumines", "undercoat's",
327
+ "fleecier", "brick", "qualities", "imprecision", "reprisals", "discounts",
328
+ "harmonics", "Mann's", "terrorism", "interminable", "Santiago's",
329
+ "deepness", "tramples", "golder", "voyeurism's", "tent", "particle's",
330
+ "minuend", "waxwings", "knobby", "trustee", "funnily", "hotheadedness's",
331
+ "Kristin", "what", "bite", "murmur's", "pustule's", "weeknights",
332
+ "rocked", "athlete", "ventilates", "impresses", "daguerreotyping",
333
+ "Gross", "gambols", "villa", "maraud", "disapproval", "apostrophe's",
334
+ "sheaf", "noisemaker's", "autonomy's", "massing", "daemon's", "Thackeray",
335
+ "fermenting", "whammy", "philosophise", "empathy", "calamities",
336
+ "sunbathe", "Qom", "yahoo's", "coxcomb's", "move", "school's",
337
+ "rainmakers", "shipwreck", "potbelly's", "courageously", "current",
338
+ "Aleut", "treaties", "U", "always", "Bosch", "impregnating", "bud's",
339
+ "carat", "centrists", "acquaintance's", "convoy's", "chichis",
340
+ "restraint's", "Cosby", "factotums", "handshaking", "paragon's",
341
+ "mileages", "Tammie", "cartoonists", "lemmas", "lowliness's", "onion's",
342
+ "E's", "Bible", "Cranmer", "fob's", "minks", "overstocking", "Willamette",
343
+ "needle's", "scuppers", "Carborundum", "upwardly", "tallies", "aptitude",
344
+ "synod", "nasturtium's", "Pensacola", "snappish", "merino", "sups",
345
+ "fingerboard's", "prodigy's", "narcissism's", "substantial", "lug",
346
+ "establishing", "Vergil's", "patrimonies", "shorted", "forestation",
347
+ "undeniable", "Katmandu", "lamination", "trollop's", "odd", "stanza",
348
+ "paraplegic", "melanin", "Rico", "foreman", "stereotypes", "affinity's",
349
+ "cleansing", "sautéing", "epochs", "crooners", "manicured", "undisclosed",
350
+ "propel", "usage", "Alioth's", "Aurelia's", "peruse", "Vassar's",
351
+ "Demosthenes's", "Brazos", "supermarket", "scribbles", "Jekyll's",
352
+ "discomfort's", "mastiffs", "ballasting", "Figueroa", "turnstiles",
353
+ "convince", "Shelton's", "Gustavo", "shunting", "Fujitsu's", "fining's",
354
+ "hippos", "dam's", "expressionists", "peewee", "troop's", NULL
355
+ };
356
+
357
+ char *make_random_string(char *buf, int max_words)
358
+ {
359
+ char *s = buf;
360
+ int num_words = 5 + rand() % (max_words - 5);
361
+
362
+ for (; num_words > 0; num_words--) {
363
+ sprintf(s, "%s ", test_word_list[rand() % TEST_WORD_LIST_SIZE]);
364
+ s += strlen(s);
365
+ }
366
+ return buf;
367
+ }
368
+
369
+ char *get_nth_word(char *words, char *buf, int n, int *start, int *end)
370
+ {
371
+ char *s = words, *e;
372
+ int len;
373
+ while (n > 0) {
374
+ while (*s && *s != ' ') {
375
+ s++;
376
+ }
377
+ if (*s == '\0') {
378
+ buf[0] = '\0';
379
+ return buf;
380
+ }
381
+ n--;
382
+ s++;
383
+ }
384
+
385
+ e = s;
386
+ while (*e && *e != ' ') {
387
+ e++;
388
+ }
389
+ len = e - s;
390
+ memcpy(buf, s, len);
391
+ buf[len] = '\0';
392
+ *start = s - words;
393
+ *end = e - words;
394
+
395
+ return buf;
396
+ }
397
+
398
+ int nth_word_eql(char *words, char *word, int n)
399
+ {
400
+ char *s = words;
401
+ while (n > 0) {
402
+ while (*s && *s != ' ') {
403
+ s++;
404
+ }
405
+ }
406
+
407
+ if (*s) {
408
+ if (strncmp(s, word, strlen(word)) == 0) {
409
+ return 1;
410
+ }
411
+ else {
412
+ return 0;
413
+ }
414
+ }
415
+ else {
416
+ return 0;
417
+ }
418
+ }
419
+
420
+ int s2l(const char *str, int *arr)
421
+ {
422
+ int i = 0;
423
+ int num = 0;
424
+ const char *p = str;
425
+ bool in_number = false;
426
+ do {
427
+ if (isdigit(*p)) {
428
+ in_number = true;
429
+ num = num * 10 + *p - '0';
430
+ } else {
431
+ if (in_number) {
432
+ arr[i++] = num;
433
+ num = 0;
434
+ }
435
+ in_number = false;
436
+ }
437
+ } while (*(p++));
438
+ return i;
439
+ }
440
+
441
+ bool frt_ary_includes(int *array, int size, int val)
442
+ {
443
+ bool found = false;
444
+ int i;
445
+ for (i = 0; i < size; i++) {
446
+ if (array[i] == val) found = true;
447
+ }
448
+ return found;
449
+ }
450
+
451
+ static const char *DIGITS[] = {
452
+ "zero ",
453
+ "one ",
454
+ "two ",
455
+ "three ",
456
+ "four ",
457
+ "five ",
458
+ "six ",
459
+ "seven ",
460
+ "eight ",
461
+ "nine "
462
+ };
463
+
464
+ static const char *TEENS[] = {
465
+ "ten ",
466
+ "eleven ",
467
+ "twelve ",
468
+ "thirteen ",
469
+ "fourteen ",
470
+ "fifteen ",
471
+ "sixteen ",
472
+ "seventeen ",
473
+ "eighteen ",
474
+ "nineteen "
475
+ };
476
+
477
+ static const char *TENS[] = {
478
+ "hello ",
479
+ "world ",
480
+ "twenty ",
481
+ "thirty ",
482
+ "forty ",
483
+ "fifty ",
484
+ "sixty ",
485
+ "seventy ",
486
+ "eighty ",
487
+ "ninety "
488
+ };
489
+
490
+ static const char *GROUPS[] = {
491
+ "thousand ",
492
+ "million ",
493
+ "billion ",
494
+ "trillion ",
495
+ "quadrillion ",
496
+ "quintillion ",
497
+ "sextillion ",
498
+ "septillion ",
499
+ "octillion ",
500
+ "nonillion ",
501
+ "decillion "
502
+ };
503
+
504
+ static const int K = 1000;
505
+
506
+ static char *under_1000(int val)
507
+ {
508
+ const char *hundreds = (val >= 100) ? DIGITS[val/100] : "";
509
+ const char *_and = "";
510
+ const char *tens = "";
511
+ const char *digits = "";
512
+ int mod100 = val%100;
513
+ if (val >= 100) _and = ((val%100) > 0) ? "hundred and " : "hundred ";
514
+ if (mod100 > 0 && mod100 < 10) {
515
+ tens = DIGITS[mod100];
516
+ } else if (mod100 >= 10 && mod100 < 20) {
517
+ tens = TEENS[mod100 - 10];
518
+ } else if (mod100 >= 20) {
519
+ tens = TENS[mod100/10];
520
+ if (mod100%10) digits = DIGITS[mod100%10];
521
+ }
522
+ return frt_strfmt("%s%s%s%s", hundreds, _and, tens, digits);
523
+ }
524
+
525
+ static char *group(int val, int level)
526
+ {
527
+ char *res;
528
+ if (val >= K) {
529
+ char *above = group(val/K, level+1);
530
+ const char *groups = ((val%1000000)/1000) ? GROUPS[level] : "";
531
+ char *below = under_1000(val%K);
532
+ res = frt_strfmt("%s%s%s", above, groups, below);
533
+ free(above);
534
+ free(below);
535
+ } else {
536
+ res = under_1000(val);
537
+ }
538
+ return res;
539
+ }
540
+
541
+ char *num_to_str(int num)
542
+ {
543
+ char *res;
544
+ if (num < 0) {
545
+ char *neg;
546
+ neg = num_to_str(-num);
547
+ res = frt_strfmt("negative %s ", neg);
548
+ free(neg);
549
+ } else if (num == 0) {
550
+ res = frt_estrdup("zero ");
551
+ } else {
552
+ res = group(num, 0);
553
+ }
554
+ res[strlen(res)-1] = '\0';
555
+ return res;
556
+ }
557
+
558
+ FILE *temp_open()
559
+ {
560
+ return fopen("test/testdir/tmp", "w+");
561
+ }
@@ -0,0 +1,25 @@
1
+ #ifndef FRT_T_HELPER_H
2
+ #define FRT_T_HELPER_H
3
+
4
+ #include "frt_global.h"
5
+
6
+ #define TEST_WORD_LIST_SIZE 1930
7
+ #define TEST_WORD_LIST_MAX_LEN 23
8
+
9
+ #if defined POSH_OS_WIN32 || defined POSH_OS_WIN64
10
+ #define TEST_DIR ".\\test\\testdir\\store"
11
+ #else
12
+ #define TEST_DIR "./test/testdir/store"
13
+ #endif
14
+
15
+ extern const char *test_word_list[];
16
+
17
+ extern char *make_random_string(char *buf, int num_words);
18
+ extern char *get_nth_word(char *words, char *buf, int n, int *s, int *e);
19
+ extern int nth_word_eql(char *words, char *word, int n);
20
+ extern int s2l(const char *str, int *arr);
21
+ extern bool frt_ary_includes(int *array, int size, int val);
22
+ extern char *num_to_str(int num);
23
+ extern FILE *temp_open();
24
+
25
+ #endif