IMPROVES-i12 split cmp11sht.c into lib11sht.{c,h}
This commit is contained in:
39
lib11sht.h
Normal file
39
lib11sht.h
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
/* ************************************************************************ *
|
||||||
|
* lib11sht.h, v1.0 *
|
||||||
|
* Fuzzy comparison library: public API *
|
||||||
|
* *
|
||||||
|
* Copyright (C) 2025 by Ruben Carlo Benante <rcb@beco.cc> *
|
||||||
|
* GNU GPL version 2 or later. *
|
||||||
|
* ************************************************************************ */
|
||||||
|
|
||||||
|
#ifndef LIB11SHT_H
|
||||||
|
#define LIB11SHT_H
|
||||||
|
|
||||||
|
#define LEVN_SBUFF 256 /* min size for s1/s2 buffers and bounded input */
|
||||||
|
|
||||||
|
/* Compare similarity between two strings (after asciify + trim + lowercase).
|
||||||
|
* Returns:
|
||||||
|
* 0 if equal or similar above the given threshold ratio
|
||||||
|
* -1 if a < b alphabetically (after normalization)
|
||||||
|
* +1 if a > b alphabetically (after normalization)
|
||||||
|
* On error: sets errno = EINVAL and returns 0; comparison result is undefined.
|
||||||
|
* Caller must reset errno = 0 before the call to detect errors.
|
||||||
|
*
|
||||||
|
* Parameters:
|
||||||
|
* a, b input strings (NUL-terminated, may contain UTF-8 accented Latin chars)
|
||||||
|
* thr Levenshtein similarity threshold 0.0..1.0; matches above this count as equal
|
||||||
|
* ratio out: Levenshtein similarity 0.0..1.0 (1.0 on exact-after-normalize)
|
||||||
|
* s1, s2 out: caller-provided buffers (>= LEVN_SBUFF) filled with the
|
||||||
|
* normalized inputs (useful for diagnostics; can be ignored)
|
||||||
|
*/
|
||||||
|
int sequal(char *a, char *b, float thr, float *ratio, char *s1, char *s2);
|
||||||
|
|
||||||
|
/* Compare two floats within ±delta.
|
||||||
|
* Returns:
|
||||||
|
* 0 if |a - b| <= delta
|
||||||
|
* -1 if a < b - delta
|
||||||
|
* +1 if a > b + delta
|
||||||
|
*/
|
||||||
|
int fequal(float a, float b, float delta);
|
||||||
|
|
||||||
|
#endif /* LIB11SHT_H */
|
||||||
Reference in New Issue
Block a user