1 /* Fuzzy string comparison. 2 Copyright (C) 1995, 2000, 2002-2003, 2006, 2008-2021 Free Software 3 Foundation, Inc. 4 5 This file was written by Peter Miller <pmiller@agso.gov.au> 6 7 This program is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation; either version 3 of the License, or 10 (at your option) any later version. 11 12 This program is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with this program. If not, see <https://www.gnu.org/licenses/>. */ 19 20 #ifndef _FSTRCMP_H 21 #define _FSTRCMP_H 22 23 #ifdef __cplusplus 24 extern "C" { 25 #endif 26 27 /* Fuzzy compare of S1 and S2. Return a measure for the similarity of S1 28 and S1. The higher the result, the more similar the strings are. 29 The result is bounded between 0 (meaning very dissimilar strings) and 30 1 (meaning identical strings). */ 31 extern double fstrcmp (const char *s1, const char *s2); 32 33 /* Like fstrcmp (S1, S2), except that if the result is < LOWER_BOUND, an 34 arbitrary other value < LOWER_BOUND can be returned. */ 35 extern double fstrcmp_bounded (const char *s1, const char *s2, 36 double lower_bound); 37 38 /* A shortcut for fstrcmp. Avoids a function call. */ 39 #define fstrcmp(s1,s2) fstrcmp_bounded (s1, s2, 0.0) 40 41 /* Frees the per-thread resources allocated by this module for the current 42 thread. 43 You don't need to call this function in threads other than the main thread, 44 because per-thread resources are reclaimed automatically when the thread 45 exits. However, per-thread resources allocated by the main thread are 46 comparable to static allocations; calling this function can be useful to 47 avoid an error report from valgrind. */ 48 extern void fstrcmp_free_resources (void); 49 50 #ifdef __cplusplus 51 } 52 #endif 53 54 #endif